如何将String转换为ArrayList?

时间:2011-09-08 12:16:40

标签: java string arraylist converter

在我的String中,我可以使用逗号分隔的任意数量的单词。我希望每个单词都添加到ArrayList中。 E.g:

String s = "a,b,c,d,e,.........";

13 个答案:

答案 0 :(得分:217)

尝试类似

的内容
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

答案 1 :(得分:28)

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

答案 2 :(得分:6)

选项1

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

<强>选项2

asList

在我看来,Option1更好,因为

  1. 我们可以将创建的ArrayList对象的数量从2减少到1. // get the matching pointer for left or right subtree, and return tnode *bst_find_by_name(tnode *ptr, const char *nom) { // accept a null node, just exit early before dereferencing it if (ptr == NULL) { return NULL; } // is it this node? if(strcmp(ptr->name, nom) == 0){ return ptr; } tnode * ptrtemp = bst_find_by_name(ptr->left, nom); if(!ptrtemp) { ptrtemp = bst_find_by_name(ptr->right, nom); } return ptrtemp; } 方法创建并返回一个ArrayList对象。
  2. 它的性能要好得多(但它返回一个固定大小的列表)。
  3. 请参阅文档here

答案 3 :(得分:6)

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

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

答案 4 :(得分:2)

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

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

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

答案 5 :(得分:1)

如果您想将字符串转换为 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;
}

但我在你的例子中看到一个字符串数组,所以如果你想将字符串数组转换为 ArrayList ,请使用:

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

答案 6 :(得分:1)

好的,我将在这里扩展答案,因为很多来到这里的人都希望用空格来分割字符串。这就是它的完成方式:

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

答案 7 :(得分:1)

您可以使用:

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

你应该问自己,你是否真的需要ArrayList。通常,您将根据其他标准过滤列表,Stream是完美的。你可能想要一套;您可能希望通过另一个正则表达式等来过滤它们。顺便说一句,Java 8提供了这个非常有用的扩展,它可以在任何CharSequencehttps://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);

答案 8 :(得分:0)

让我们来回答一个问题:反转一个字符串。我将使用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
*/

答案 9 :(得分:0)

更容易理解的是这样的:

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

答案 10 :(得分:0)

我建议使用StringTokenizer,它非常有效

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

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

答案 11 :(得分:0)

这是在Kotlin中使用Gson

@"radial"

答案 12 :(得分:0)

如果您使用的是番石榴(应该是,请参见effective java item #15):

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