繁体   English   中英

在不迭代的情况下添加ArrayList

[英]adding in ArrayList without iterating

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

x = new ArrayList<Float>(350);

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

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

所以我的问题是,是否有另一种方法可以重复执行相同的操作。 我希望进行最少的迭代以提高效率。

如果您想提高效率,我将不在此处使用ArrayListFloat 我不建议您使用float即使它的精度非常差,除非您真的知道自己在做什么。

我建议您使用双精度数组。

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

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

从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.

正如彼得所说,使用数组。 如果要在数组列表中使用此代码,则可以使用以下代码。 这将创建一个数组列表,其中包含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类型,并分配所需的任何初始值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM