如何将字符串转换为数组列表?

在我的 String 中,我可以有任意数量的逗号分隔的单词。我希望将每个单词添加到数组列表中。例如:

String s = "a,b,c,d,e,.........";
615055 次浏览

比如说

List<String> myList = new ArrayList<String>(Arrays.asList(s.split(",")));

演示:

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

如果你想把一个 绳子转换成一个 数组列表,试试这个:

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

但是我在你的例子中看到了一个字符串数组,所以如果你想把一个 字符串数组字符串数组转换成 数组列表,可以这样做:

public static ArrayList<String> convertStringArrayToArraylist(String[] strArr){
ArrayList<String> stringList = new ArrayList<String>();
for (String s : strArr) {
stringList.add(s);
}
return stringList;
}

如果你正在导入或者你有一个数组(字符串类型)在你的代码中,你必须把它转换成数组列表(离场字符串) ,那么使用集合是更好的。像这样:

String array1[] = getIntent().getExtras().getStringArray("key1"); or String array1[] = ... then


List allEds = new ArrayList(); Collections.addAll(allEds, array1);

好的,我将在这里扩展一下答案,因为很多来这里的人都想用 空格来分解字符串。事情是这样的:

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

在我看来,选项1更好,因为

  1. 我们可以将创建的 ArrayList 对象的数量从2减少到1。asList方法创建并返回 ArrayList 对象。
  2. 它的性能要好得多(但它返回一个固定大小的列表)。

请参阅文档 给你

你可以用:

List<String> tokens = Arrays.stream(s.split("\\s+")).collect(Collectors.toList());

您首先应该问自己是否真的需要数组列表。通常,您会根据额外的条件对列表进行筛选,对于这些条件,Stream 是最佳选择。您可能需要一个集合; 您可能需要通过另一个正则表达式等来过滤它们。Java8提供了这个非常有用的扩展,顺便说一下,它可以在任何 CharSequence: https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#splitAsStream-java.lang.CharSequence-上工作。因为你根本不需要数组,避免这样创建它:

// This will presumably be a static final field somewhere.
Pattern splitter = Pattern.compile("\\s+");
// ...
String untokenized = reader.readLine();
Stream<String> tokens = splitter.splitAsStream(untokenized);

在 Java 9中,使用 List#of ,这是一个不可变列表静态工厂方法,变得更加简单。

 String s = "a,b,c,d,e,.........";
List<String> lst = List.of(s.split(","));

让我们回答一个问题: 反转字符串。我将使用 stream ()来做这件事。收集()。但首先我要把字符串变成数组列表。

    public class StringReverse1 {
public static void main(String[] args) {


String a = "Gini Gina  Proti";


List<String> list = new ArrayList<String>(Arrays.asList(a.split("")));


list.stream()
.collect(Collectors.toCollection( LinkedList :: new ))
.descendingIterator()
.forEachRemaining(System.out::println);






}}
/*
The output :
i
t
o
r
P




a
n
i
G


i
n
i
G
*/

更容易理解是这样的:

String s = "a,b,c,d,e";
String[] sArr = s.split(",");
List<String> sList = Arrays.asList(sArr);

我推荐使用 StringTokenizer,非常有效

     List<String> list = new ArrayList<>();


StringTokenizer token = new StringTokenizer(value, LIST_SEPARATOR);
while (token.hasMoreTokens()) {
list.add(token.nextToken());
}

这是在利用 Kotlin 的格森

 val listString = "[uno,dos,tres,cuatro,cinco]"
val gson = Gson()
val lista = gson.fromJson(listString , Array<String>::class.java).toList()
Log.e("GSON", lista[0])

如果你正在使用番石榴(你应该这样做,参见 有效的 java 项目 # 15) :

ImmutableList<String> list = ImmutableList.copyOf(s.split(","));