将字符串数组转换为ArrayList

207

我想将 String 数组转换为 ArrayList。例如,字符串数组如下:

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

如何将此字符串数组转换为ArrayList?


21
+1;它现在是谷歌搜索结果中的第二个链接。 - Steve Kehlet
3
ArrayList<String> a = new ArrayList<>(Arrays.asList(words));这段代码的意思是,创建一个包含字符串的ArrayList对象a,并将一个字符串数组words转换为ArrayList并存储在a中。 - Witold Kaczurba
你可以用三种基本方法来实现。在Java 8中使用Collections.addAll、Arrays.asList和streams - 参考 - http://www.codingeek.com/java/how-to-convert-array-to-list-in-java/ - Hitesh Garg
5个回答

338

使用此代码实现该功能,

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);  
      }  
   }  
}

14
总结一下,你所需要的只是这一行代码:List<String> wordList = Arrays.asList(words);。这句话正确吗? - Keale
1
如果words是一个字符串数组,那么是的。 - Nicolai S
26
注意:Arrays.asList(...)创建的是一个抽象列表,而不是真正的列表。因此,你可以执行像wordList.sort((a, b) -> a.length() - b.length())这样的操作,但你不能执行wordList.remove(0)或者往其中添加元素,否则会抛出UnsupportedOperationException异常。 - Nicolai S
12
这段代码创建了一个List但它不是ArrayList,因此答案是错误的。你不能从这个List中删除元素->会抛出异常。 - Witold Kaczurba
@jeff6times7 你可以在它上面使用Collections API,lambda表达式,过滤,显示,拼接,排序,等等...等等。有很多事情可以做。 - Witold Kaczurba
显示剩余6条评论

183
new ArrayList( Arrays.asList( new String[]{"abc", "def"} ) );

7
我认为这个解决方案更好,因为 Arrays.asList 返回一个 java.util.Arrays.ArrayList.ArrayList<T>(T[]),因此如果你尝试添加某些东西,你将会得到一个 java.lang.UnsupportedOperationException - Manuel Spigolon
1
如果数组中的元素数量有限,可以这样写: new ArrayList(Arrays.asList("abc", "def")); - Diptopol Dam
2
为了避免IDE警告,new ArrayList<>(...)对我有用,而不是new ArrayList(...)(请注意<>)。 - Farbod Salamat-Zadeh
2
对我来说最好的答案是:使用List<String> wordList = Arrays.asList(words);,执行wordList instanceof ArrayList<String>将返回false。 - alvgarvilla

55

使用Collections#addAll()方法

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

5
我喜欢这个解决方案。它简洁而清晰。 - Dinesh Arora
我不知道为什么这不是被接受的答案。 - Bathsheba
这是正确的答案。asList 是错误的。使用 Collection.addAll(arrayList, string array)... - Silambarasan
如果您想从数组中获取可变列表,那么这就是正确的解决方案,这很可能是我们正在寻找的。如果需要不可变列表,则上述代码可以完成该任务。 - Ashwin

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

8
这里的结果是一个“List”,而不是一个“ArrayList”。 - Marko Topolnik
4
@MarkoTopolnik 您是正确的,这需要进行包装,所以代码应该是:List<String> wordList = new ArrayList<String>(Arrays.asList(words)); - Scorpion

12
在大多数情况下,List<String> 应该足够使用。无需创建 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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接