将字符串数组转换为 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使用此代码,
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<String> 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<T>(T[])
,所以如果你尝试add
,你会得到一个java.lang.UnsupportedOperationException
如果数组中元素的数量有限,可以写成 new ArrayList( Arrays.asList("abc", "def"));
为了避免 IDE 警告,new ArrayList<>(...)
为我工作,而不是 new ArrayList(...)
(注意 <>
)。
对我来说最好的答案。使用List<String> wordList = Arrays.asList(words);
,执行wordList instanceof ArrayList<String>
将返回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在大多数情况下,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);
【讨论】:
以上是关于将字符串数组转换为 ArrayList [重复]的主要内容,如果未能解决你的问题,请参考以下文章