Converteer string naar arrayclist & lt; karakter & gt; in Java

Hoe een tekenreeks te converteren zonder separator naar een ArrayList<Character>.

Mijn string is als volgt:

String str = "abcd..."

Ik weet dat een manier om dit te doen is het converteren van de reeks naar char[]eerst en converteer de char[]naar ArrayList <Character>.

Is er een betere manier om dit te doen? zoals direct converteren? Overwegende tijd en prestaties, omdat ik coderen met een grote database.


Antwoord 1, Autoriteit 100%

U moet deze als volgt toevoegen.

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

Antwoord 2, Autoriteit 39%

Gebruik Lambda-expressie om dit te doen.

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

Antwoord 3, Autoriteit 33%

Sorry voor de retrobump, maar dit is nu echt eenvoudig!

U kunt dit eenvoudig doen in Java 8 met behulp van streams! Probeer dit:

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

U moet mapToObjgebruiken omdat chars()een IntStreamretourneert.


Antwoord 4, autoriteit 28%

Als u de lijst niet hoeft aan te passen nadat deze is gemaakt, is het waarschijnlijk de betere manier om de tekenreeks in een klasse te verpakken door de List<Character>-interface als volgt te implementeren:

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

En gebruik deze klasse dan als volgt:

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

Antwoord 5, autoriteit 11%

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

Antwoord 6

je kunt het als volgt doen:

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

Antwoord 7

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

Other episodes