Java 不迭代地添加ArrayList
我想创建一个长度为350的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
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);
}