在 Java 中向已经初始化的数组列表中添加多个项

我的 arraylist可能会根据用户设置进行不同的填充,所以我用

ArrayList<Integer> arList = new ArrayList<Integer>();

如何在不使用 arList.add(55);逐个添加数百个整数的情况下添加数百个整数?

191958 次浏览

If you have another list that contains all the items you would like to add you can do arList.addAll(otherList). Alternatively, if you will always add the same elements to the list you could create a new list that is initialized to contain all your values and use the addAll() method, with something like

Integer[] otherList = new Integer[] {1, 2, 3, 4, 5};
arList.addAll(Arrays.asList(otherList));

or, if you don't want to create that unnecessary array:

arList.addAll(Arrays.asList(1, 2, 3, 4, 5));

Otherwise you will have to have some sort of loop that adds the values to the list individually.

What is the "source" of those integers? If it is something that you need to hard code in your source code, you may do

arList.addAll(Arrays.asList(1,1,2,3,5,8,13,21));

I believe scaevity's answer is incorrect. The proper way to initialize with multiple values would be this...

int[] otherList = {1,2,3,4,5};

So the full answer with the proper initialization would look like this

int[] otherList = {1,2,3,4,5};
arList.addAll(Arrays.asList(otherList));

If you are looking to avoid multiple code lines to save space, maybe this syntax could be useful:

        java.util.ArrayList lisFieldNames = new ArrayList() {
{
add("value1");
add("value2");
}
};

Removing new lines, you can show it compressed as:

        java.util.ArrayList lisFieldNames = new ArrayList() {
{
add("value1"); add("value2"); (...);
}
};

Collections.addAll is a varargs method which allows us to add any number of items to a collection in a single statement:

List<Integer> list = new ArrayList<>();
Collections.addAll(list, 1, 2, 3, 4, 5);

It can also be used to add array elements to a collection:

Integer[] arr = ...;
Collections.addAll(list, arr);

If you needed to add a lot of integers it'd probably be easiest to use a for loop. For example, adding 28 days to a daysInFebruary array.

ArrayList<Integer> daysInFebruary = new ArrayList<>();


for(int i = 1; i <= 28; i++) {
daysInFebruary.add(i);
}

Java 9+ now allows this:

List<Integer> arList = List.of(1,2,3,4,5);

The list will be immutable though.

In a Kotlin way;

val arList = ArrayList<String>()
arList.addAll(listOf(1,2,3,4,5))