如何将字符串转换为 ArrayList?

问题描述 投票:0回答:14

在我的字符串中,我可以有任意数量的逗号分隔的单词。我希望将每个单词添加到 ArrayList 中。例如:

String s = "a,b,c,d,e,.........";
java string arraylist converters
14个回答
322
投票

尝试类似的东西

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]

此帖已改写为文章here.


35
投票
 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());

13
投票

在Java 9中,使用

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

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

11
投票

选项1

List<String> list = Arrays.asList("hello");

选项2

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

在我看来,Option1更好,因为

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

请参考这里的文档


7
投票

更容易理解是这样的:

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

4
投票

好吧,我将在这里扩展答案,因为很多来这里的人都想用 whitespace 分割字符串。这是它的完成方式:

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

2
投票

如果您正在导入或代码中有一个数组(字符串类型)并且您必须将其转换为数组列表(当然是字符串),那么使用集合会更好。像这样:

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

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

2
投票

您可以使用:

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

首先你应该问问自己是否真的需要 ArrayList。很多时候,您将根据附加条件过滤列表,而 Stream 是完美的选择。你可能想要一套;您可能想通过另一个正则表达式等方式过滤它们。顺便说一下,Java 8 提供了这个非常有用的扩展,它适用于任何

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

1
投票

如果你想将一个 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 array 转换成 ArrayList 使用这个:

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

1
投票

让我们做一个问题:反转一个字符串。我将使用 stream().collect() 来做到这一点。但首先我会将字符串更改为 ArrayList 。

    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
*/

1
投票

这是在 Kotlin 中使用 Gson

 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])

0
投票

我推荐使用StringTokenizer,非常高效

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

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

0
投票

如果您正在使用番石榴(您应该使用,请参阅effective java item #15):

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

0
投票
String value = "java spring springboot microservices";

ArrayList<String> listValue = new ArrayList<>(Arrays.asList(value.split(" "));
© www.soinside.com 2019 - 2024. All rights reserved.