我正在尝试将一些python代码转换为java,并且需要设置列表的默认值。我知道默认值,列表的大小,我的目标是设置一个默认值,然后在我的程序中更改它们。在python中我只是这样做(创建10个值为零的项目):
list = [0]*10
我正在尝试:
List<Integer> list1 = Arrays.asList(0*10); // it just multiples 0 by 10.
它做得很好,我知道我可以这样做:
for(int i = 0;i<10;i++)
{
list1.add(0);
}
我想知道是否有更好的方法(而不是for循环)?
答案 0 :(得分:19)
Arrays.fill
可以避免循环。
Integer[] integers = new Integer[10];
Arrays.fill(integers, 0);
List<Integer> integerList = Arrays.asList(integers);
答案 1 :(得分:10)
Collections.nCopies
是您的朋友:
List<Integer> list = Collections.nCopies(10, 0);
如果需要一个可变列表,请将其包装:
List<Integer> list = new ArrayList<>(Collections.nCopies(10, 0));
答案 2 :(得分:4)
也许你只需要一个阵列?
int[] array = new int[10];
如果您需要动态更改其大小,则需要一个列表。如果您不需要此功能,阵列可能会满足您的需求,它会自动将所有值初始化为0。
答案 3 :(得分:2)
据我所知,标准库中没有任何内置功能。但是你可以轻松地编写一次这样的方法并从你想要的任何地方调用它。例如:
public static <T> List<T> newArrayList(T value, int size) {
List<T> list = new ArrayList<T>(size);
for (int i = 0; i < size; i++) {
list.add(value);
}
return list;
}
如果您不想更改列表的大小(即添加或删除元素),Mike Samuel的答案可能更有效。另请注意,如果您使用的是可变类型,则可能无法获得所需内容:
List<StringBuilder> list = newArrayList(new StringBuilder(), 10);
list.get(0).append("Foo");
System.out.println(list.get(5)); // Prints "Foo"
...因为列表中的每个元素都是对同一对象的引用。
答案 4 :(得分:0)
您可以尝试:
List<Integer> list1 = Arrays.asList(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
有10个零。您需要知道编译时元素的数量,但您只有一行。如果在编译时不知道元素的数量,那么可以使用建议的Arrays.fill()方法。
答案 5 :(得分:0)
我会坚持使用for循环。
BTW ... 0 * 10 = 0所以只需输入您需要的金额
ArrayList<Integer> list = new ArrayList<Integer>(10);
答案 6 :(得分:0)
如果您使用的是Java 8或更高版本,则可以执行以下操作。这是必需的导入:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;
这是使它正常工作的代码
List<Integer> integers = new ArrayList() {{
IntStream.range(0,5).forEach((i) -> add(0));
}};
双括号并不是必须的!希望对您有所帮助。
答案 7 :(得分:-2)
在Java中,不是真的。当涉及到这类东西时,Java相对比较冗长,所以除了像你这样的循环之外,没有什么比这更简单了。