将字符串转换为java中的arraylist <Character>

Pan*_*ong 21 java string list arraylist converter

如何将没有分隔符的String转换为ArrayList<Character>.

我的字符串是这样的:

String str = "abcd..."
Run Code Online (Sandbox Code Playgroud)

我知道这样做的一种方法是将String转换为char[]first,然后将其转换char []ArrayList <Character>.

有没有更好的方法来做到这一点?喜欢直接转换?考虑时间和性能,因为我正在使用大型数据库进行编码.

squ*_*guy 16

你需要像这样添加它.

String str = "abcd...";
ArrayList<Character> chars = new ArrayList<Character>();
for (char c : str.toCharArray()) {
  chars.add(c);
}
Run Code Online (Sandbox Code Playgroud)


Leo*_*zen 6

很抱歉 Retrobump,但这现在真的很容易!

您可以使用 Streams 在 Java 8 中轻松完成此操作!尝试这个:

String string = "testingString";
List<Character> list = string.chars().mapToObj((i) -> Character.valueOf((char)i)).collect(Collectors.toList());
System.out.println(list);
Run Code Online (Sandbox Code Playgroud)

您需要使用,mapToObj因为chars()返回一个IntStream.


Rah*_*isi 6

使用lambda表达式来做到这一点.

String big_data = "big-data";
ArrayList<Character> chars
        = new ArrayList<>(
                 big_data.chars()
                .mapToObj(e -> (char) e)
                .collect(
                        Collectors.toList()
                )
        );    
Run Code Online (Sandbox Code Playgroud)


Mik*_*rov 5

如果在创建列表后不需要修改列表,可能更好的方法是将字符串包装到类实现List<Character>接口中,如下所示:

import java.util.AbstractList;
import java.util.List;

public class StringCharacterList extends AbstractList <Character>
{
    private final String string;

    public StringCharacterList (String string)
    {
        this.string = string;
    }

    @Override
    public Character get (int index)
    {
        return Character.valueOf (string.charAt (index));
    }

    @Override
    public int size ()
    {
        return string.length ();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后像这样使用这个类:

List <Character> l = new StringCharacterList ("Hello, World!");
System.out.println (l);
Run Code Online (Sandbox Code Playgroud)