Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不迭代地添加ArrayList_Java_Arrays_Arraylist - Fatal编程技术网

Java 不迭代地添加ArrayList

Java 不迭代地添加ArrayList,java,arrays,arraylist,Java,Arrays,Arraylist,我想创建一个长度为350的ArrayList。我这样做: x = new ArrayList<Float>(350); x=newarraylist(350); 不,我希望这个数组在每个点上都有“零”浮点值。我可以这样做: for (int i = 0; i< 350 ; i++){ x.add((float) 0.0); } for(int i=0;i

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

x = new ArrayList<Float>(350);
x=newarraylist(350);
不,我希望这个数组在每个点上都有“零”浮点值。我可以这样做:

for (int i = 0; i< 350 ; i++){
            x.add((float) 0.0);
}
for(int i=0;i<350;i++){
x、 加上((浮动)0.0);
}

所以我的问题是,是否有另一种方法可以不重复地做同样的事情。我想要最小的迭代来提高效率。

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

我建议您使用双精度数组

double[] x = new double[350]; // all 0.0
来自java:

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

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

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.

ArrayList(Collection正如Peter所说,使用数组。如果你想在数组列表中使用它,你可以使用下面的代码。这将创建一个包含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);
 }
Integer[]a=新整数[100];
数组。填充(a,42);
列表l=新的ArrayList(Arrays.asList(a));
for(整数:l){
System.out.println(整数);
}

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

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

O(n)
非常有效。你应该担心让其他效率较低的区域变得更高效。不能使用默认值初始化arraylist。构造函数只允许cap、nothing或值的集合。您可以通过写入
0.0f
来创建浮点文本。这样你就不需要把它抛到水面上了。但是请注意,在大多数情况下,使用double而不是float是一个很好的选择,因为几乎所有Java数学函数都接受并返回double。当你也使用双打时,你就避免了不必要的施放。我使用浮球是因为它比双打小,占用的空间相对较小。我在这里处理大量的大型数组,所以我认为浮点可能是一个更好的选择。
nCopies
方法也会对指定的元素数进行循环,所以关于“我希望最小迭代以提高效率”,这不会给你带来任何好处。@jlordo这是一个猜测,你是对的,它-但它确实返回了一个您无法修改的
列表
,因此限制了它的使用。@soulcheck和Jesper:Akaidoot声明了一个事实,即它在答案中是不可变的…@jlordo haha看起来我跳过了一半。tl;博士走到了极端:)
 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);
 }