Je convertissez une chaîne en arraylist de caractère récursivement. Une nouvelle arrayliste est créée chaque fois que la fonction est appelée.
public static ArrayList<Character> strToList(String word) { ArrayList<Character> letters = new ArrayList<Character>(); //ArrayList<Character> emptyList = new ArrayList<Character>(); if(word.isEmpty() == true){ return letters; } else { char let = word.charAt(0); letters.add(Character.valueOf(let)); System.out.println(letters); String temp = word.substring(1, word.length()); System.out.println(temp); return strToList(temp); } }
3 Réponses :
transmettez un seul instance d'arraylist code> comme argument sur votre méthode (
Strtoliste statique public public (String Word, liste
public static ArrayList<Character> strToList(String word)
{
ArrayList<Character> letters = new ArrayList<Character>();
if (!word.isEmpty()) {
char let = word.charAt(0);
letters.add(Character.valueOf(let));
System.out.println(letters);
String temp = word.substring(1, word.length());
System.out.println(temp);
letters.addAll(strToList(temp)); // add all the elements of the List returned by the
// recursive call to the new List created in this
// call
}
return letters;
}
Mise à jour de votre code comme ci-dessous
public static ArrayList<Character> strToList(String word, ArrayList<Character> letters) { // ArrayList<Character> letters = new ArrayList<Character>(); //ArrayList<Character> emptyList = new ArrayList<Character>(); if(word.isEmpty() == true){ return letters; } else { char let = word.charAt(0); letters.add(Character.valueOf(let)); System.out.println(letters); String temp = word.substring(1, word.length()); System.out.println(temp); return strToList(temp, letters); } } public static void main(String[] args) throws Exception { ArrayList<Character> letters = new ArrayList<Character>(); System.out.println(strToList("Hello", letters)); // [H, e, l, l, o] }
Merci, mais je veux éviter de modifier les paramètres de la fonction.
Alors c'est la meilleure réponse appropriée: Stackoverflow.com/a/56124086/2987755 , je ne voulais pas changer la logique de votre fonction, alors ajouté cette version comme réponse
Vous pouvez également faire cela de cette manière
[H, e, l, l, o]
Pensez-vous que static est le coupable :)?
Quelle est ta question? S'il vous plaît Modifier Votre message.
Oui, parce que chaque fois ce
ArrayList lettres = nouvelle arrayliste (); code> est appelé
Définir l'arrayliste comme statique.
Oui, c'est ce que votre code dit: Créez une nouvelle liste. Mais quelle est votre question?