Dans ma chaîne, je peux avoir un nombre arbitraire de mots séparés par des virgules. Je voulais que chaque mot ajouté dans une ArrayList. Par exemple.:
String s = "a,b,c,d,e,.........";
Essayez quelque chose comme
List<String> myList = new ArrayList<String>(Arrays.asList(s.split(",")));
Arrays.asList
documentationString.split
documentationArrayList(Collection)
documentation constructeurDémo:
String s = "lorem,ipsum,dolor,sit,amet";
List<String> myList = new ArrayList<String>(Arrays.asList(s.split(",")));
System.out.println(myList); // prints [lorem, ipsum, dolor, sit, amet]
Cet article a été réécrit sous forme d'article ici .
String s1="[a,b,c,d]";
String replace = s1.replace("[","");
System.out.println(replace);
String replace1 = replace.replace("]","");
System.out.println(replace1);
List<String> myList = new ArrayList<String>(Arrays.asList(replace1.split(",")));
System.out.println(myList.toString());
En Java 9, l’utilisation de List#of
, qui est une méthode de liste statique de listes immuables, devenait plus simple.
String s = "a,b,c,d,e,.........";
List<String> lst = List.of(s.split(","));
Option 1:
List<String> list = Arrays.asList("hello");
Option 2:
List<String> list = new ArrayList<String>(Arrays.asList("hello"));
À mon avis, Option1 est préférable car
asList
crée et retourne un objet ArrayList.Veuillez vous référer à la documentation ici
Si vous importez ou si vous avez un tableau (de type chaîne) dans votre code et que vous devez le convertir en liste (chaîne hors cours), l'utilisation de collections est préférable. comme ça:
String array1[] = getIntent().getExtras().getStringArray("key1"); or String array1[] = ... then
List allEds = new ArrayList(); Collections.addAll(allEds, array1);
Vous pouvez utiliser:
List<String> tokens = Arrays.stream(s.split("\\s+")).collect(Collectors.toList());
Vous devriez vous demander si vous avez vraiment besoin de ArrayList en premier lieu. Très souvent, vous allez filtrer la liste en fonction de critères supplémentaires, pour lesquels un flux est parfait. Vous voulez peut-être un jeu; vous voudrez peut-être les filtrer au moyen d'une autre expression régulière, etc. Java 8 fournit d'ailleurs cette extension très utile, qui fonctionnera sur toutes les variables CharSequence
: https://docs.Oracle.com/javase/8/ docs/api/Java/util/regex/Pattern.html # splitAsStream-Java.lang.CharSequence - . Puisque vous n'avez pas du tout besoin du tableau, évitez de le créer ainsi:
// This will presumably be a static final field somewhere.
Pattern splitter = Pattern.compile("\\s+");
// ...
String untokenized = reader.readLine();
Stream<String> tokens = splitter.splitAsStream(untokenized);
Si vous voulez convertir un string en un ArrayList, essayez ceci:
public ArrayList<Character> convertStringToArraylist(String str) {
ArrayList<Character> charList = new ArrayList<Character>();
for(int i = 0; i<str.length();i++){
charList.add(str.charAt(i));
}
return charList;
}
Mais je vois un tableau de chaînes dans votre exemple, donc si vous voulez convertir un tableau string en ArrayList, utilisez ceci:
public static ArrayList<String> convertStringArrayToArraylist(String[] strArr){
ArrayList<String> stringList = new ArrayList<String>();
for (String s : strArr) {
stringList.add(s);
}
return stringList;
}
Ok, je vais développer les réponses ici car beaucoup de ceux qui viennent ici veulent diviser la chaîne par un espace blanc . Voici comment cela se fait:
List<String> List = new ArrayList<String>(Arrays.asList(s.split("\\s+")));
Prenons une question: Inverser une chaîne. Je vais le faire en utilisant stream (). Collect (). Mais je vais d'abord changer la chaîne en une ArrayList.
public class StringReverse1 {
public static void main(String[] args) {
String a = "Gini Gina Proti";
List<String> list = new ArrayList<String>(Arrays.asList(a.split("")));
list.stream()
.collect(Collectors.toCollection( LinkedList :: new ))
.descendingIterator()
.forEachRemaining(System.out::println);
}}
/*
The output :
i
t
o
r
P
a
n
i
G
i
n
i
G
*/
Si vous utilisez de la goyave (et vous devriez le faire, voir article Java effectif n ° 15 ):
ImmutableList<String> list = ImmutableList.copyOf(s.split(","));
Je recommande d'utiliser le StringTokenizer, c'est très efficace
List<String> list = new ArrayList<>();
StringTokenizer token = new StringTokenizer(value, LIST_SEPARATOR);
while (token.hasMoreTokens()) {
list.add(token.nextToken());
}
Ceci utilise Gson à Kotlin
val listString = "[uno,dos,tres,cuatro,cinco]"
val gson = Gson()
val lista = gson.fromJson(listString , Array<String>::class.Java).toList()
Log.e("GSON", lista[0])
Plus facile à comprendre, c'est comme ça:
String s = "a,b,c,d,e";
String[] sArr = s.split(",");
List<String> sList = Arrays.asList(sArr);