如何将一个string转换成一个ArrayList?
在我的string中,我可以有任意数量的逗号分隔的单词。 我想每个单词添加到一个ArrayList。 例如:
String s = "a,b,c,d,e,.........";
尝试类似
List<String> myList = new ArrayList<String>(Arrays.asList(s.split(",")));
-
Arrays.asList
文档 -
String.split
文档 -
ArrayList(Collection)
构造函数文档
演示:
String s = "lorem,ipsum,dolor,sit,amet"; List<String> myList = new ArrayList<String>(Arrays.asList(s.split(","))); System.out.println(myList); // prints [lorem, ipsum, dolor, sit, amet]
这篇文章在这里被重写为一篇文章。
String s1="[a,b,c,d]"; String replace = s1.replace("[",""); System.out.println(replace); String replace1 = replace.replace("]",""); System.out.println(replace1); List<String> myList = new ArrayList<String>(Arrays.asList(replace1.split(","))); System.out.println(myList.toString());
在Java 9中,使用不变列表静态工厂方法的List#of
变得更加简单。
String s = "a,b,c,d,e,........."; List<String> lst = List.of(s.split(","));
如果你想把一个string转换成一个ArrayList,试试这个:
public ArrayList<Character> convertStringToArraylist(String str) { ArrayList<Character> charList = new ArrayList<Character>(); for(int i = 0; i<str.length();i++){ charList.add(str.charAt(i)); } return charList; }
但是我在你的例子中看到一个string数组,所以如果你想将一个string数组转换成ArrayList,使用这个:
public static ArrayList<String> convertStringArrayToArraylist(String[] strArr){ ArrayList<String> stringList = new ArrayList<String>(); for (String s : strArr) { stringList.add(s); } return stringList; }
如果你正在导入,或者你的代码中有一个数组(stringtypes),你必须将其转换为数组列表(离线string),那么使用集合更好。 喜欢这个:
String array1[] = getIntent().getExtras().getStringArray("key1"); or String array1[] = ... then List allEds = new ArrayList(); Collections.addAll(allEds, array1);
好吧,我将扩大在这里的答案,因为很多来这里的人想要用空格分割string。 这是如何完成的:
List<String> List = new ArrayList<String>(Arrays.asList(s.split("\\s+")));
选项1 :
List<String> list = Arrays.asList("hello");
选项2 :
List<String> list = new ArrayList<String>(Arrays.asList("hello"));
在我看来,Option1更好,因为
- 我们可以将创build的ArrayList对象的数量从2减less到1.
asList
方法创build并返回一个ArrayList对象。 - 它的性能要好得多(但它返回一个固定大小的列表)。
请参考这里的文档
你可以使用:
List<String> tokens = Arrays.stream(s.split("\\s+")).collect(Collectors.toList());
你应该问自己,如果你真的需要ArrayList的话。 通常情况下,您将根据附加条件筛选列表,对于这些条件,Stream是完美的。 你可能想要一套; 您可能需要通过另一个正则expression式等来过滤它们。Java 8提供了这个非常有用的扩展,顺便说一下,它可以在任何CharSequence
上工作: https : //docs.oracle.com/javase/8/docs/ api / java / util / regex / Pattern.html#splitAsStream-java.lang.CharSequence- 。 由于你完全不需要这个数组,因此避免这样创build它:
// This will presumably be a static final field somewhere. Pattern splitter = Pattern.compile("\\s+"); // ... String untokenized = reader.readLine(); Stream<String> tokens = splitter.splitAsStream(untokenized);