在Java中将多个项目添加到已初始化的arraylist


74

我正在搜索它,但似乎找不到语法。我arraylist可能会被填充不同的基于用户设置,所以我初始化它

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

现在我想添加数百个整数而不用 arList.add(55);

Answers:


105

如果您还有另一个列表,其中包含要添加的所有项目,则可以执行arList.addAll(otherList)。另外,如果您总是将相同的元素添加到列表中,则可以创建一个新列表,该列表被初始化为包含所有值并使用addAll()方法,例如

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

或者,如果您不想创建该不必要的数组:

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

否则,您将不得不进行某种循环,将值分别添加到列表中。


真的,我认为有更好的方法吗?哦,循环工作。Thx
batoutofhell,2013年

是的,除非您要创建一个用所有值初始化的新列表(请参见上面的编辑),否则这些都是您的选择。
scaevity 2013年

第二种绝对是最简洁的方法
ucMedia

29

这些整数的“来源”是什么?如果您需要在源代码中进行硬编码,则可以这样做

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

这绝对是最简洁的方法。
krispy 2014年

11

Collections.addAll 是一个varargs方法,它允许我们在单个语句中将任意数量的项目添加到集合中:

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

它还可以用于将数组元素添加到集合中:

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

3

如果您希望避免多行代码来节省空间,则此语法可能会很有用:

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

删除新行,可以将其压缩为:

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

add()即使压缩到一行,仍然需要多次调用并增加混乱度

我将在字符串Ej中具有值。字符串theValues =“ 1,20,2,1001”; (手动或从文件加载)。然后将其传递给Array:Integer [] theArray = theValues.split(“,”,-1); 一旦有了数组,就很容易将其传递给ArrayList:ArrayList <Integer> numbersList = new ArrayList <Integer>(java.util.Arrays.asList(theArray)); 。(未经测试)
Fran G Aparicio

以下是有关为何有效的更详细的答案
亚历克斯(Alex)

0

如果您需要添加很多整数,那么最好使用for循环。例如,将28天添加到daysInFebruary数组中。

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

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

-4

我相信上面的答案是不正确的,用多个值初始化的正确方法是这样...

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

因此,正确初始化的完整答案如下所示

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

6
这不会编译,因为int是基本类型,并且Arrays.asList()在基本类型的数组上无法正常工作。选择的答案使用Integer,这是正确的方法。
krispy 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.