将字符串数组转换为 ArrayList [重复]

Posted

技术标签:

【中文标题】将字符串数组转换为 ArrayList [重复]【英文标题】:Convert String array to ArrayList [duplicate] 【发布时间】: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 【参考方案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);

【讨论】:

以上是关于将字符串数组转换为 ArrayList [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将 ArrayList 转换为特定类型的数组 [重复]

将 ArrayList 转换为常规字符串数组 [重复]

将ArrayList解析为日期[重复]

将整数对象的 ArrayList 转换为 int 数组? [复制]

怎么将arraylist转换为字符串数组

如何将 ArrayList 转换为 Array [重复]