【问题标题】:Assigning an array to an ArrayList in Java在 Java 中将数组分配给 ArrayList
【发布时间】:2011-04-14 09:11:07
【问题描述】:

是否可以在 Java 中将 array 分配给 ArrayList

【问题讨论】:

    标签: java arrays arraylist


    【解决方案1】:

    你可以使用Arrays.asList():

    Type[] anArray = ...
    ArrayList<Type> aList = new ArrayList<Type>(Arrays.asList(anArray));
    

    或者,Collections.addAll():

    ArrayList<Type> aList = new ArrayList<Type>();
    Collections.addAll(theList, anArray); 
    

    请注意,从技术上讲,您并没有将数组分配给 List(好吧,您不能这样做),但我认为这是您正在寻找的最终结果。

    【讨论】:

    • 这个答案比我的好!
    • Collections.addAll(theList, anArray);为我做的。非常感谢! :)
    【解决方案2】:

    Arrays 类包含一个 asList 方法,您可以按如下方式使用:

    String[] words = ...;
    List<String> wordList = Arrays.asList(words);
    

    【讨论】:

    • 这将返回一个固定大小的字符串列表,这些字符串由实现 List 接口的某个私有类型封装。如果您需要一个可变的 java.util.ArrayList 实例,@NullUserException 的答案是最好的。
    • Richard,只是想知道为什么上面的列表变成了固定大小的?我不能在下一行的同一个列表中进一步添加另一个元素吗?比如 wordList.add(anotherStringElement);
    • 这是 asList 方法的定义行为。正如@NullUserException 指出的那样,您应该转换为 ArrayList [ArrayList aList = new ArrayList(Arrays.asList(words)] 以获得可以添加更多项目的 ArrayList。
    【解决方案3】:

    如果您正在导入或者您的代码中有一个数组(字符串类型),并且您必须将其转换为 arraylist(offcourse 字符串),那么使用集合会更好。 像这样:

    String array1[] = getIntent().getExtras().getStringArray("key1"); or
    String array1[] = ...
    then
    
    List<String> allEds = new ArrayList<String>();
    Collections.addAll(allEds, array1);
    

    【讨论】:

      【解决方案4】:

      这是有效的

          int[] ar = {10, 20, 20, 10, 10, 30, 50, 10, 20};
      
          ArrayList<Integer> list = new ArrayList<>();
      
          for(int i:ar){
              list.add(new Integer(i));
      
          }
          System.out.println(list.toString());
      
          // prints : [10, 20, 20, 10, 10, 30, 50, 10, 20]
      

      【讨论】:

        猜你喜欢
        • 2017-11-22
        • 2015-08-11
        • 2016-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多