0

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

x = new ArrayList<Float>(350);

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

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

所以我的问题是是否有另一种方法可以在不迭代的情况下做同样的事情。我想要最少的迭代来提高效率。

4

4 回答 4

7

如果您想要效率,我不会使用ArrayListFloat在这里。我不建议使用,float即使它的精度很差,除非你真的知道你在做什么。

我建议你使用一个双精度数组。

double[] x = new double[350]; // all 0.0
于 2013-01-09T10:09:39.657 回答
2

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

于 2013-01-09T10:15:42.040 回答
0

从java文档

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.
于 2013-01-09T10:10:33.303 回答
0

正如彼得所说,使用数组。如果你想在数组列表中使用它,你可以使用下面的代码。这将创建一个包含 100 个整数的数组列表,每个整数的值为 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 类型并分配您想要的任何初始值。

于 2013-01-09T10:14:04.997 回答