web-dev-qa-db-ja.com

javaで文字列をarraylist <Character>に変換する

区切り文字なしの文字列をArrayList<Character>に変換する方法。

私の文字列は次のようなものです。

String str = "abcd..."

これを行う1つの方法は、最初に文字列をchar[]に変換し、次にchar []ArrayList <Character>に変換することです。

これを行うより良い方法はありますか?直接変換したいですか?大きなデータベースでコーディングしているため、時間とパフォーマンスを考慮します。

18
Pan Long

このように追加する必要があります。

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

これを行うにはラムダ式を使用します。

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

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

chars()mapToObjを返すため、IntStreamを使用する必要があります。

4
Leo Izen

リストの作成後にリストを変更する必要がない場合は、おそらく次のように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
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);
    }
1
Biswajit

次のようにできます:

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));
        }
    }
}
0
Ely

1行 guava ソリューションがあります:

Lists.charactersOf("hello");

結果のImmutableListArrayListのコンストラクターに渡すことができますが、なぜArrayListが正確に必要なのでしょうか?

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