Dans ma chaîne, je peux avoir un nombre arbitraire de mots séparés par des virgules. Je voulais que chaque mot soit ajouté dans une ArrayList. Par exemple:
String s = "a,b,c,d,e,.........";
Dans ma chaîne, je peux avoir un nombre arbitraire de mots séparés par des virgules. Je voulais que chaque mot soit ajouté dans une ArrayList. Par exemple:
String s = "a,b,c,d,e,.........";
Réponses:
Essayez quelque chose comme
List<String> myList = new ArrayList<String>(Arrays.asList(s.split(",")));
Arrays.asList
DocumentationString.split
DocumentationArrayList(Collection)
documentation du 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 .
split
sien après: P
Arrays.toString()
pour l'imprimer, mais oui.
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());
replace = s1.replaceAll("^\\[|]$", "");
Option 1 :
List<String> list = Arrays.asList("hello");
Option 2 :
List<String> list = new ArrayList<String>(Arrays.asList("hello"));
À mon avis, Option1 est meilleure car
asList
méthode crée et renvoie un objet ArrayList.Veuillez vous référer à la documentation ici
List<Character> word1 = new ArrayList<Character>(Arrays.asList(A[0].toCharArray()));
J'essaie d'obtenir la première chaîne d'un tableau de chaînes et de convertir cette chaîne en charArray et ce charArray en List <Character>
Dans Java 9, l'utilisation List#of
, qui est une liste immuable des méthodes statiques d'usine, devient plus simple.
String s = "a,b,c,d,e,.........";
List<String> lst = List.of(s.split(","));
s.split("\\s*,\\s*")
peut être ajouté pour des soins supplémentaires
Si vous importez ou si vous avez un tableau (de type string) dans votre code et que vous devez le convertir en arraylist (chaîne offcourse), alors l'utilisation des collections est meilleure. comme ça:
String array1[] = getIntent().getExtras().getStringArray("key1"); or String array1[] = ... then
List allEds = new ArrayList(); Collections.addAll(allEds, array1);
Ok, je vais étendre les réponses ici car beaucoup de gens qui viennent ici veulent diviser la chaîne par un espace . Voici comment procéder:
List<String> List = new ArrayList<String>(Arrays.asList(s.split("\\s+")));
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 Stream est parfait. Vous voudrez peut-être un ensemble; vous voudrez peut-être les filtrer au moyen d'une autre expression régulière, etc. Java 8 fournit cette extension très utile, d'ailleurs, qui fonctionnera sur n'importe quel 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 souhaitez convertir une chaîne en 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 souhaitez convertir un tableau de chaînes 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;
}
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])
Prenons une question: inverser une chaîne. Je vais le faire en utilisant stream (). Collect (). Mais d'abord, je changerai la chaîne en 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 l'être, consultez l' élément java efficace n ° 15 ):
ImmutableList<String> list = ImmutableList.copyOf(s.split(","));
new ArrayList<String>()
peut être redondant selon la manière dont il est utilisé. (comme dans votre exemple;)