获取数组的索引,并删除该索引剩下的所有内容

如何解决获取数组的索引,并删除该索引剩下的所有内容

| 我有一个
int
的数组
int[] RowOfints = 1,2,3,4,5,6,7,8,9;
如果我输入例如值
4
,我想从数组中删除
1,3
并返回剩下的值。 怎么做?     

解决方法

我正在解释您要查找值
4
的索引,然后从该索引位置开始的所有内容的问题。
var result = RowOfInts.SkipWhile(item => item != 4); // optionally,.ToArray()
result
将是由
4 .. 9
组成的
IEnumerable<int>
。如果需要一个具体的数组,也可以使用可选的
ToArray()
扩展方法。如果数组中没有元素符合给定条件,则将得到一个零长度的序列。     ,如果您不想使用LINQ:
int[] newRowOfInts = new int[RowOfInts.Length - index];
Array.Copy(RowOfInts,index,newRowOfInts,newRowOfInts.Length);
    ,在LINQ中使用跳过扩展。
int[] newArray = RowOfInts.Skip(value).ToArray();
    ,好的,现在我对问题有了更好的了解,我将发布实际要求的版本(再次错误地强调效率而非可读性):
private static int[] RemoveBeforeValue(int[] source,int value)
{
    if (source == null)
        return null;
    int valueIndex = 0;
    while (valueIndex < source.Length && source[valueIndex] != value)
        valueIndex++;
    if (valueIndex == 0)
        return source;
    int[] result = new int[source.Length - valueIndex];
    Array.Copy(source,valueIndex,result,result.Length);
    return result;
}
老答案 如果您想用硬方法(但高效!)进行操作,则可以这样做(假设您要删除的值小于提供的值):
private static int[] RemoveValuesLessThan(int[] source,int newMinimum)
{
    if (source == null)
        return null;
    int lessThanCount = 0;
    for (int index = 0; index < source.Length; index++)
        if (source[index] < newMinimum)
            lessThanCount++;
    if (lessThanCount == 0)
        return source;
    int[] result = new int[source.Length - lessThanCount];
    int targetIndex = 0;
    for (int index = 0; index < source.Length; index++)
        if (source[index] >= newMinimum)
            result[targetIndex++] = source[index];
    return result;
}
    ,对于连续的整数数组
public static void RemoveIntsBefore(int i) 
    {
        int[] RowOfints = { 1,2,3,4,5,6,7,8,9 };

        for (int k = 0; k < RowOfints.Length; k++)
        {
            if (RowOfints.ElementAt(k) < i)
            {
                RowOfints[k] = i;
            }
        }

        RowOfints = RowOfints.Distinct().ToArray();
//this part is to write it on console
            //foreach (var item in RowOfints)
            //{
            //    Console.WriteLine(item);
            //}

            //Console.ReadLine();

    }
有了这个,你的数组不必是顺序的
public static void RemoveIntsBefore(int i) 
    {
        int[] RowOfints = { 1,9,1,2 };                     

        Console.WriteLine(\"OUTPUT\");
        foreach (var item in Enumerable.Range(i-1,RowOfints.Length + 1 - i).ToArray())
        {
            Console.WriteLine(RowOfints[item]);
        }

        Console.ReadLine();

    }
    ,使用System.Linq; ....
int[] RowOfints = {1,9};
int[] Answer = RowOfints.Where(x => x != 1 && x != 2 && x != 3).ToArray()
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?