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

时间:2013-03-11 05:16:26

标签: java string list arraylist converter

如何将不带分隔符的字符串转换为ArrayList<Character>

我的字符串是这样的:

String str = "abcd..."

我知道一种方法是首先将字符串转换为char[],然后将char []转换为ArrayList <Character>

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

8 个答案:

答案 0 :(得分:14)

您需要像这样添加它。

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

答案 1 :(得分:5)

使用lambda表达式来执行此操作。

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

答案 2 :(得分:2)

如果您在创建后不需要修改列表,可能更好的方法是将字符串包装到实现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 ();
    }
}

然后像这样使用这个类:

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

答案 3 :(得分:2)

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

您需要使用mapToObj,因为chars()会返回IntStream

答案 4 :(得分:1)

public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str = "abcd...";
        ArrayList<Character> a=new ArrayList<Character>();
        for(int i=0;i<str.length();i++)
        {
            a.add(str.charAt(i));

        }
        System.out.println(a);
    }

答案 5 :(得分:0)

你可以这样做:

import java.util.ArrayList;

public class YourClass{

    public static void main(String [] args){

        ArrayList<Character> char = new ArrayList<Character>();
        String str = "abcd...";

        for (int x = 0; x < str.length(); x ++){
            char.add(str.charAt(x));
        }
    }
}

答案 6 :(得分:0)

有一行guava解决方案:

Lists.charactersOf("hello");

您可以将结果ImmutableList传递给ArrayList的构造函数,但我可以问您为什么需要确切的ArrayList?

答案 7 :(得分:0)

String myString = "xxx";
ArrayList<Character> myArrayList = myString.chars().mapToObj(x -> (char) x).collect(toCollection(ArrayList::new));
myArrayList.forEach(System.out::println);