Comment convertir une chaîne sans séparateur en un ArrayList<Character>
.
Ma chaîne est comme ça:
String str = "abcd..."
Je sais qu’une façon de procéder consiste à convertir la chaîne en char[]
d’abord, puis à convertir le char []
en ArrayList <Character>
.
Y a-t-il une meilleure façon de faire cela? comme convertir directement? Compte tenu du temps et des performances, je code avec une base de données volumineuse.
Vous devez l'ajouter comme ceci.
String str = "abcd...";
ArrayList<Character> chars = new ArrayList<Character>();
for (char c : str.toCharArray()) {
chars.add(c);
}
utilisez l'expression lambda pour le faire.
String big_data = "big-data";
ArrayList<Character> chars
= new ArrayList<>(
big_data.chars()
.mapToObj(e -> (char) e)
.collect(
Collectors.toList()
)
);
Si vous n'avez pas besoin de modifier la liste après l'avoir créée, le mieux serait probablement d'envelopper la chaîne dans la classe implémentant l'interface List<Character>
comme ceci:
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 ();
}
}
Et puis utilisez cette classe comme ceci:
List <Character> l = new StringCharacterList ("Hello, World!");
System.out.println (l);
Désolé pour le Retrobump, mais c'est maintenant très facile!
Vous pouvez le faire facilement dans Java 8 en utilisant Streams! Essaye ça:
String string = "testingString";
List<Character> list = string.chars().mapToObj((i) -> Character.valueOf((char)i)).collect(Collectors.toList());
System.out.println(list);
Vous devez utiliser mapToObj
car chars()
renvoie IntStream
.
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);
}
vous pouvez le faire comme ceci:
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));
}
}
}
Il existe une ligne goyave solution:
Lists.charactersOf("hello");
Vous pouvez transmettre ImmutableList
résultant au constructeur de ArrayList
mais puis-je vous demander pourquoi vous avez exactement besoin de ArrayList?