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?