如何在arraylist中迭代两个int数组

时间:2015-05-06 03:59:59

标签: java arrays arraylist

我正在尝试迭代数组列表中的int数组我在浏览所有那些包含数组列表迭代中的单个数组但是现在我试图在数组列表中迭代两个int数组如何在单个arraylist中实现这个? / p>

static void arraylist()
{
    int []a={1,4,6,7};
    int []b={2,3,5};

    ArrayList<int[]> aa=new ArrayList<int[]>();
    aa.add(a);
    aa.add(b);

    int[] contentFromList = aa.get(0) ;
    for (int i = 0; i < contentFromList.length; i++) {
        int j = contentFromList[i];
        System.out.println("Value at index - "+i+" is :"+j);
    }
}

输出:

Value at index - 0 is :1
Value at index - 1 is :4
Value at index - 2 is :6
Value at index - 3 is :7

5 个答案:

答案 0 :(得分:0)

添加另一个循环,如下所示

请格式化以下代码。

myfun("gah")
gah
# [1] 3

根据我对您的评论的理解,您可能需要以下代码。

static void arraylist() {
        int []a={1,4,6,7};
        int []b={2,3,5};

        ArrayList<int[]> aa=new ArrayList<int[]>();
        aa.add(a);
        aa.add(b);

        for(int k = 0; k < aa.size(); k++) {
           int[] contentFromList = aa.get(k) ;
           for (int i = 0; i < contentFromList.length; i++) {
              int j = contentFromList[i];
              System.out.println("Value at index - "+ i +" is :" + j);
           }
        }
}

static void arraylist() { int []a={1,4,6,7}; int []b={2,3,5}; ArrayList<int[]> aa=new ArrayList<int[]>(); aa.add(Arrays.asList(a)); aa.add(Arrays.asList(b)); int[] contentFromList = aa.get(k) ; for (int i = 0; i < contentFromList.length; i++) { int j = contentFromList[i]; System.out.println("Value at index - "+ i +" is :" + j); } } 会将您的数组“a”转换为Arrays.asList(a),然后将其添加到您的List aa 。之后,所有元素都将成为单个列表的一部分。

答案 1 :(得分:0)

arraylist所需的另一个循环。以下是代码

static void arraylist()
    {
        int []a={1,4,6,7};
        int []b={2,3,5};

        ArrayList<int[]> aa=new ArrayList<int[]>();
        aa.add(a);
        aa.add(b);

        for(int z=0; z < aa.size(); z++){
            int[] contentFromList = aa.get(z);

            for (int i = 0; i < contentFromList.length; i++) {
                int j = contentFromList[i];
                System.out.println("Value at index - "+i+" is :"+j);
            }
        }

答案 2 :(得分:0)

再添加一个循环来读取第二个数组中的数据:

static void arraylist()
{
    int []a={1,4,6,7};
    int []b={2,3,5};

    ArrayList<int[]> aa=new ArrayList<int[]>();
    aa.add(a);
    aa.add(b);

for(int k = 0; k < aa.size(); k++) {
int[] contentFromList = aa.get(k) ;
for (int i = 0; i < contentFromList.length; i++) {
    int j = contentFromList[i];
    System.out.println("Value at index - "+i+" is :"+j);
            }
     }
}

答案 3 :(得分:0)

我看不出混合Collection(s)和数组的原因。所以,我会从

开始
List<List<Integer>> aa = new ArrayList<>();

然后您可以添加Integer[]值,例如

Integer[] a = { 1, 4, 6, 7 };
Integer[] b = { 2, 3, 5 };
List<List<Integer>> aa = new ArrayList<>();
aa.add(Arrays.asList(a));
aa.add(Arrays.asList(b));
System.out.println(aa);

并获取

[[1, 4, 6, 7], [2, 3, 5]]

相反,如果你必须使用List<int[]>,那么

int[] a = { 1, 4, 6, 7 };
int[] b = { 2, 3, 5 };
List<int[]> aa = new ArrayList<>();
aa.add(a);
aa.add(b);
System.out.print("[");
for (int i = 0; i < aa.size(); i++) {
    if (i != 0) {
        System.out.print(", ");
    }
    System.out.print(Arrays.toString(aa.get(i)));
}
System.out.println("]");

是生成前一个输出所必需的。 Java数组不会覆盖Object.toString()

答案 4 :(得分:0)

Java8 Stream解决方案。

简单高效,您可以获得懒惰评估的好处:

aa.stream().flatMap(arr -> {

        Stream.Builder<Integer> build = Stream.builder();
        for(int i = 0; i < arr.length; i++)
            build.add(arr[i]);
        return build.build();

}).forEach(System.out::println);