【问题标题】:Add multiple items to already initialized arraylist in java在java中将多个项目添加到已经初始化的arraylist
【发布时间】:2013-02-19 06:34:35
【问题描述】:

我在谷歌上搜索,似乎找不到语法。我的arraylist 可能会根据用户设置以不同方式填充,所以我已经对其进行了初始化

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

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

【问题讨论】:

标签: java arraylist collections


【解决方案1】:

如果您有另一个列表,其中包含您想要添加的所有项目,您可以使用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));

否则,您将不得不使用某种循环将值单独添加到列表中。

【讨论】:

  • 真的,我认为有更好的方法吗?哦,好吧,循环工作。谢谢
  • 是的,除非你想创建一个用你所有的值初始化的新列表(见我上面的编辑),这些都是你的选择。
  • 第二种绝对是最简洁的做法
  • 正是我想要的
【解决方案2】:

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

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

【讨论】:

  • 这绝对是最简洁的做法。
【解决方案3】:

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

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

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

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

【讨论】:

    【解决方案4】:

    如果您希望避免使用多行代码以节省空间,那么这种语法可能会很有用:

            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"; (手动或从文件加载)。然后将其传递给数组: Integer[] theArray = theValues.split(",", -1);获得数组后,很容易将其传递给 ArrayList: ArrayList numbersList = new ArrayList(java.util.Arrays.asList(theArray)); . (未测试)
    • 这里有更多 detailed answer 说明为什么会这样。
    【解决方案5】:

    Java 9+ 现在允许这样做:

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

    该列表将是 immutable

    【讨论】:

    • 最后,这是将多个元素添加到一个列表的单行方法。没有循环,没有额外的列表,只有一行简单的代码。谢谢。
    【解决方案6】:

    如果您需要添加大量整数,使用 for 循环可能是最简单的。例如,将 28 天添加到 daysInFebruary 数组。

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

    【讨论】:

      【解决方案7】:

      以科特林方式;

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

      【讨论】:

        【解决方案8】:

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

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

        所以正确初始化的完整答案如下所示

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

        【讨论】:

        • 这无法编译,因为 int 是原始类型,而 Arrays.asList() 无法在原始类型数组上正常工作。选择的答案使用整数,这是正确的方法。
        猜你喜欢
        • 2017-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-18
        • 1970-01-01
        • 2018-10-21
        • 1970-01-01
        相关资源
        最近更新 更多