【问题标题】:Convert String array to ArrayList [duplicate]将字符串数组转换为 ArrayList [重复]
【发布时间】:2012-05-18 19:26:48
【问题描述】:

我想将String 数组转换为ArrayList。例如字符串数组是这样的:

String[] words = new String[]{"ace","boom","crew","dog","eon"};

如何将这个String数组转换为ArrayList?

【问题讨论】:

  • +1;它现在是谷歌上的第二个链接。
  • ArrayList a = new ArrayList(Arrays.asList(words));
  • 您可以通过 3 种基本方式进行操作。在 Java 8 中使用 Collections.addAll、Arrays.asList 和流 - 参考 - codingeek.com/java/how-to-convert-array-to-list-in-java

标签: java


【解决方案1】:

使用此代码,

import java.util.Arrays;  
import java.util.List;  
import java.util.ArrayList;  

public class StringArrayTest {

   public static void main(String[] args) {  
      String[] words = {"ace", "boom", "crew", "dog", "eon"};  

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

      for (String e : wordList) {  
         System.out.println(e);  
      }  
   }  
}

【讨论】:

  • 总而言之,您需要的只是List&lt;String&gt; wordList = Arrays.asList(words); 行。这是正确的吗?
  • @Keale 如果words 是一个字符串数组,那么,是的。
  • 注意:Arrays.asList(...) 创建一个 AbstractList,而不是一个真正的列表。因此,您可以执行 wordList.sort((a, b) -> a.length() - b.length()) 之类的操作,但不能执行 wordList.remove(0) 或添加操作。这将抛出 UnsupportedOperationException。
  • 这段代码创建了一个List,但它不是一个ArrayList。所以这是一个错误的答案。您不能从该列表中删除元素 -> 将引发异常。
  • @Vito 我必须同意这可能不是解决实际问题的方法,除非有人能告诉我为什么要将 String[] 转换为 List 然后不更新列表。跨度>
【解决方案2】:
new ArrayList( Arrays.asList( new String[]{"abc", "def"} ) );

【讨论】:

  • 我认为这个解决方案更好,因为Arrays.asList 返回一个java.util.Arrays.ArrayList.ArrayList&lt;T&gt;(T[]),所以如果你尝试add,你会得到一个java.lang.UnsupportedOperationException
  • 如果数组中元素的数量有限,可以写成 new ArrayList( Arrays.asList("abc", "def"));
  • 为了避免 IDE 警告,new ArrayList&lt;&gt;(...) 为我工作,而不是 new ArrayList(...)(注意 &lt;&gt;)。
  • 对我来说最好的答案。使用List&lt;String&gt; wordList = Arrays.asList(words);,执行wordList instanceof ArrayList&lt;String&gt; 将返回false。
【解决方案3】:

使用Collections#addAll()

String[] words = {"ace","boom","crew","dog","eon"};
List<String> arrayList = new ArrayList<>(); 
Collections.addAll(arrayList, words); 

【讨论】:

  • 我喜欢这个解决方案。它简洁干净。
  • 我不知道为什么这不是公认的答案。
  • 这是正确的答案。 asList 是错误的。使用 Collection.addAll(arrayList, string array)...
【解决方案4】:
String[] words= new String[]{"ace","boom","crew","dog","eon"};
List<String> wordList = Arrays.asList(words);

【讨论】:

  • 这里的结果是List,而不是ArrayList
  • @MarkoTopolnik 你是对的,这需要被包装所以 List wordList = new ArrayList(Arrays.asList(words));
【解决方案5】:

在大多数情况下,List&lt;String&gt; 就足够了。无需创建ArrayList

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

...

String[] words={"ace","boom","crew","dog","eon"};
List<String> l = Arrays.<String>asList(words);

// if List<String> isnt specific enough:
ArrayList<String> al = new ArrayList<String>(l);

【讨论】:

    猜你喜欢
    • 2017-04-10
    • 2012-10-04
    • 2016-10-30
    • 2012-12-26
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多