是否可以在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#上看到的那样?
由于
答案 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);
}