Java中的ArrayLists和索引器

时间:2010-02-28 15:48:12

标签: c# java arrays arraylist

是否可以在Java中执行此操作?也许我使用了错误的语法?

ArrayList<Integer> iAL = new ArrayList<Integer>();
iAL.addAll(Arrays.asList(new Integer[] {1, 2, 3, 4, 5 }));

for (int i = 0; i < iAL.size(); ++i) {
    System.out.println(iAL[i]); //<-------- HERE IS THE PROBLEM
}

此外,是否可以执行类似

的操作
iAL.addAll( new int[] {1, 2, 3, 4, 5} );

如在c#上看到的那样?

由于

6 个答案:

答案 0 :(得分:10)

试试System.out.println(iAL.get(i));。因为它是List,而不是array

答案 1 :(得分:4)

ArrayList<Integer> iAL = new ArrayList<Integer>();
iAL.addAll(Arrays.asList(new Integer[] {1, 2, 3, 4, 5 }));

for (int i = 0; i < iAL.size(); ++i) {
    System.out.println(iAL.get(i)); 
}

AFAIK

iAL.addAll(Arrays.asList(new Integer[] {1, 2, 3, 4, 5 })); //这是最短的解决方案

答案 2 :(得分:4)

  

此外,是否可以执行类似

的操作
iAL.addAll( new int[] {1, 2, 3, 4, 5} );

足够近:

iAL.addAll(Arrays.asList(1, 2, 3, 4, 5));

您的代码中不需要new Integer[]

答案 3 :(得分:3)

此外,我还会添加关于您的代码的其他两个注释:

例如,结合其他答案中的一些有用建议

List<Integer> list = new ArrayList<Integer>();
list.addAll(Arrays.asList(1, 2, 3, 4, 5 ));

for (Integer i : list) {
    System.out.println(i);
}

附录:coding to the interface的问题很有意思,Carl的评论特别合适。使用接口类型List可以最大限度地减少使用特定实现的义务。如果需要,您可以稍后切换到任何class that implements List

答案 4 :(得分:3)

不,你必须使用.get(i); [i]仅适用于数组。但是,如果您不需要索引变量用于其他内容,则for-each语法更可取(根据trashgod的答案)。

对于第二种情况,如果你没有调整List的大小(改变单个元素仍然可以),那么完成以下操作是完全合理的:

List<Integer> iAL = Arrays.asList(1, 2, 3, 4, 5);

注意,Arrays.asList()接受varargs参数,因此没有理由显式构造数组。

如果您想要一个可调整大小的列表,以下可能是最短的:

List<Integer> iAL = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));

答案 5 :(得分:2)

我会将您的整个代码重构为:

List<Integer> iAL = Arrays.asList(1, 2, 3, 4, 5 );

for (int i : iAL) {
  System.out.println(i);
}