从一个int列表中删除元素到另一个

时间:2018-10-12 19:32:07

标签: java arrays

import java.util.Arrays;
import java.util.*;
// public means anyone can use it.
// Java ALWAYS looks for a "main" method to run.
public class incrementing {

    // Method
    // anything within a parameter is called an argument. Any extra information the method needs for it in order to work.
    void calc() {

        // Creating our array of 10 slots.
        int[] increments = new int [9];

        // Creating a "counter" to work with the array,
        int i = 0;

        // while loop to add elements to our slots.
        while (i < increments.length) {
            increments[i] = i;
            i++;
        }
        System.out.println(Arrays.toString(increments));

        // for loop implementation. 
        int[] newlist = new int[9];
        for (int e : increments) {
            newlist.add(increments[0]);
            newlist[e] = increments[e];
            e++;

        }
        System.out.println(Arrays.toString(newlist));
        //System.out.println(Arrays.toString(increments));
    }
    // Main performs the actual actions.
    public static void main(String[] args) {
        // Creating an object of the class.
        // "test" allows me to use everything within the class of (calc).
        incrementing test = new incrementing();
        test.calc();
    }
}

如何将所有元素值从“增量”添加到“新列表”?

我最初来自Python,所以我会弹出并附加这些值,但是老实说在Java中迷失了它。

4 个答案:

答案 0 :(得分:0)

java数组中没有add方法,像下面这样修改for循环,您可以使用这样的索引从一个数组复制到另一个数组

    for (int e=0 ; i<  increments.length; e++) {
        newlist[e] = increments[e]; 
    }
for循环上的

条评论,e不是索引,而是元素。您不能在数组中使用add方法。

  for (int e : increments) {
        newlist.add(increments[0]);
        newlist[e] = increments[e];
        e++;

    }

答案 1 :(得分:0)

如果可以使用Apache Commons(org.apache.commons.lang.ArrayUtils),则可以使用:

newlist = ArrayUtils.addAll(newlist, increments)

答案 2 :(得分:0)

很简单:

for (i = 0; i < increments.length; i++) { // where i is previously defined in the scope.
    newList[i] = increments[i];
}

在这里您应该知道的是-> i用作数组和等长数组的索引,您可以保证increments中的每个索引在{{ 1}}。如果您尝试访问小于newList且大于0(N为数组大小)的索引,则将抛出IndexOutOfBoundsException。

如果您想使用Java精确复制数组,则可以使用:

N - 1

您可以在Java docs

上找到有关Arrays类的更多信息。

答案 3 :(得分:0)

此for循环基本上是for-each循环。因此,每次迭代中的 e 值是 increment 列表中的后续数字。因此,如果您这样做:increments = {3,5,2}; 而你这样做:

for(int i: increments){
    System.out.print(i+" ");
}

您将在控制台上看到:3 5 2

这是它的外观:

//double check to not get IndexOutofbounds of any of array
for (int i = 0; (i < newlist.length) && (i < increments.length); i++) { 
    newlist[i] = increments[i];
}

您可以更快地做到这一点:

newlist = increments.clone();

顺便说一句。请注意,new int [9];仅分配9个“插槽”。并且您所有的课程都应该以大写字母开头。

并查看 List 类。它们与python列表有点类似。