【问题标题】:copy array without specified element java复制没有指定元素的数组java
【发布时间】:2014-10-05 21:54:11
【问题描述】:

我正在尝试复制一个没有指定元素的数组。假设我有以下数组:

int[] array = {1,2,3,4,5,6,7,8,9};
int[] array2 = new int[array.length-1];

我想要的是将数组复制到 array2 而不包含包含 int "6" 的元素,因此它将包含 "{1,2,3,4,5,7,8,9}"

我只想使用 for 循环,这是我目前所拥有的,但它不起作用

int[] array= { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    int[] array2= new int[array.length - 1];
    int remove = 6;
    for (int i = 0; i < array2.length; i++) {
        if (array[i] != remove) {
            array2[i] = array[i];
        } else {
            array2[i] = array[i + 1];
            i++;
        }
    }
    for (int i = 0; i < array2.length; i++) {
        System.out.println(array2[i]);
    }

谢谢

【问题讨论】:

  • tabtab2 是什么?而“但它不起作用”并不能很好地替代错误消息。
  • 我的错,tab 是数组,tab2 是数组2
  • 究竟是什么不起作用?你有错误吗?另一个结果?什么都没有?

标签: java arrays copy element


【解决方案1】:
int j = 0;
int count = 0; //Set this variable to the number of times the 'remove' item appears in the list
int[] array2 = new int[array.length - count];
int remove = 6;
for(int i=0; i < array.length; i++)
{
   if(array[i] != remove)
       array2[j++] = array[i];
}

【讨论】:

  • 谢谢,但是 array2 的最后一个元素没有被复制,这里是 0 而不是 9
  • @BobJ 我猜你忘了把int count = 0;改成int count = 1;
  • 没有我放 array.length2 而不是 array.length 。谢谢它的作品
  • 您可能需要使用计数,因为数组中可能存在重复值,这将导致数组末尾有一系列 0。
【解决方案2】:

您也可以使用 Java 8 的流和 lambda 表达式来实现:

int[] array= { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int[] array2 = Arrays.stream( array ).filter( value -> value != 6 ).toArray();
System.out.println( Arrays.toString( array2 ) );
// Outputs: [1, 2, 3, 4, 5, 7, 8, 9]

【讨论】:

    猜你喜欢
    • 2021-12-25
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 2015-12-17
    • 2016-05-12
    • 1970-01-01
    • 2015-05-19
    相关资源
    最近更新 更多