在没有迭代的情况下添加ArrayList

时间:2013-01-09 10:07:42

标签: java arrays arraylist

我想创建一个长度为350的ArrayList<Float>。我这样做了:

x = new ArrayList<Float>(350);

不,我希望这个数组在每个点都有'零'浮点值。我可以这样做:

for (int i = 0; i< 350 ; i++){
            x.add((float) 0.0);
}

所以我的问题是,如果没有迭代,还有另一种方法可以做同样的事情。我想要最小的迭代来提高效率。

4 个答案:

答案 0 :(得分:7)

如果您想提高效率,我不会在此使用ArrayListFloat。我不建议使用float,因为它的精度太差了,除非你真的知道你在做什么。

我建议你使用double数组。

double[] x = new double[350]; // all 0.0

答案 1 :(得分:2)

java的Collections类有一个很好的实用工具:nCopies。请注意,这会创建一个不可变列表,但它完全符合您的要求:)

答案 2 :(得分:0)

来自java documentation

ArrayList(int initialCapacity) 
          Constructs an empty list with the specified initial capacity.

请注意,列表仍然是为空,因此您必须逐个添加元素。只有容量改变了。

我建议您构建另一个集合,例如数组,然后使用该构造函数初始化列表:

ArrayList(Collection<? extends E> c) 
          Constructs a list containing the elements of the specified collection, in the order they are returned by the collection's iterator.

答案 3 :(得分:0)

彼得说使用阵列。如果您想在数组列表中使用它,可以使用下面的代码。这将创建一个100个整数的arraylist,每个整数的值为42

 Integer[] a = new Integer[100];
 Arrays.fill(a, 42);
 List<Integer> l = new ArrayList<Integer>(Arrays.asList(a));
 for (Integer integer : l) {
      System.out.println(integer);
 }

您可以轻松地将其修改为Float类型并指定所需的任何初始值。