如果你不喜欢使用自己的循环和列表add
方法直接再有另一种方式。创建ArrayList
与元素的数量要直接这样说:
final int MAX_ELEMENTS = 1000;
List<Integer> myList = new ArrayList<Integer>(
Collections.<Integer>nCopies(MAX_ELEMENTS, null));
或者,如果你已经拥有你想要n
元素来扩大规模的列表:
myList.addAll(Collections.<Integer>nCopies(n, null));
(注意,我在这里假定该列表将持有Integer
对象,但您可以将其更改为您的自定义类型。如果您正在使用原始/预Java 5类型,那么只需删除通用声明。)
至于您的实际问题:容量!=内容。 ArrayList内部有一个物理数组和一个实际内存数。增加容量,改变内部数组,因此它可以容纳许多元素,但是,计数不会改变。你需要添加元素来增加这个数量。另一方面,如果你只是想设置特定的元素并知道你想要使用的最大值,为什么不直接使用数组呢?为什么不直接使用数组呢?为什么不直接使用数组呢?为什么不直接使用数组呢?为什么不直接使用数组呢?为什么不直接使用数组呢?如果您需要将此数组传递给需要List
的API,则请使用Arrays.asList
。其他类仍然可以更改后备数组的内容,但无法增加其大小或容量。
这将是最干净的解决方案,但ArrayList被用作仅使用ArrayList的方法中的参数。也许如果我有足够的时间,我会超载使用Map insted。 – 2010-05-09 18:28:52
您可能还会考虑加载一个Map,然后编写一个方法,在加载后从地图内容构建一个ArrayList。 但是,如果你真的需要一个ArrayList,Bozho发布的解决方案可能会很好。 – 2010-05-09 19:05:01
“该ArrayList被用作只有ArrayList的方法中的参数”严重吗?那里有代码需要'ArrayList'而不是'List'? – Powerlord 2010-05-10 18:54:36