web-dev-qa-db-de.com

konvertiere string zu arraylist <Character> in java

Wie konvertiert man einen String ohne Trennzeichen in einen ArrayList<Character>.

Mein String ist so:

String str = "abcd..."

Ich weiß, dass dies eine Möglichkeit ist, zuerst den String in char[] zu konvertieren und dann den char [] in ArrayList <Character> zu konvertieren.

Gibt es einen besseren Weg, dies zu tun? wie direkt konvertieren? Wenn man Zeit und Leistung in Betracht zieht, weil ich mit einer großen Datenbank codiere.

15
Pan Long

Sie müssen es so hinzufügen.

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

verwenden Sie dazu den Lambda-Ausdruck.

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

Wenn Sie die Liste nach der Erstellung nicht ändern müssen, wäre es wahrscheinlich besser, den String in die Klasse zu implementieren, die die List<Character>-Schnittstelle wie folgt implementiert:

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

Und dann verwenden Sie diese Klasse wie folgt:

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

Sorry für den Retrobump, aber das ist jetzt ganz einfach!

In Java 8 ist dies mit Streams problemlos möglich! Versuche dies:

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

Sie müssen mapToObj verwenden, da chars() eine IntStream zurückgibt.

2
Leo Izen
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

sie können es so machen:

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

Es gibt eine Zeile Guave Lösung:

Lists.charactersOf("hello");

Sie können die resultierende Variable ImmutableList an den Konstruktor von ArrayList übergeben.

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