pourquoi la variable change?

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Suggestion {

class Mom{
Map<String,Mom> data= new HashMap<>();
}

Mom tree = new Mom();

public void input(String s){
System.out.println("nnn : "+tree.data.keySet());
String[] mots = s.split(" ");
Mom current= tree;
for (String mot: mots){
current.data.putIfAbsent(mot,new Mom());
current = current.data.get(mot);
}
print();
}

public void print() {
System.out.println("bbb : "+tree.data.keySet());
printHelper(tree, 0);
}

private void printHelper(Mom node, int depth) {
for (Map.Entry<String, Mom> entry : node.data.entrySet()) {
for (int i = 0; i < depth; i++) {
System.out.print(" ");
}
System.out.println(entry.getKey());
printHelper(entry.getValue(), depth + 1);
}
}

public List<String> get(String s) {
System.out.println("aaaaaaaaaaaaaaaaa "+s);
Mom current = tree;
System.out.println("vvvvvvv : "+tree.data.keySet());
for (String str : s.split(" ")) {
System.out.println(str+" : " +current.data.keySet());
if (!current.data.containsKey(str)) {
System.out.println(" : done");
return new ArrayList<>();
} else {
System.out.println(" : forward");
current = current.data.get(str);
}
}
return new ArrayList<>(current.data.keySet());
}
}
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Suggestion {

class Mom{
Map<String,Mom> data= new HashMap<>();
}

Mom tree = new Mom();

public void input(String s){
System.out.println("nnn : "+tree.data.keySet());
String[] mots = s.split(" ");
Mom current= tree;
for (String mot: mots){
current.data.putIfAbsent(mot,new Mom());
current = current.data.get(mot);
}
print();
}

public void print() {
System.out.println("bbb : "+tree.data.keySet());
printHelper(tree, 0);
}

private void printHelper(Mom node, int depth) {
for (Map.Entry<String, Mom> entry : node.data.entrySet()) {
for (int i = 0; i < depth; i++) {
System.out.print(" ");
}
System.out.println(entry.getKey());
printHelper(entry.getValue(), depth + 1);
}
}

public List<String> get(String s) {
System.out.println("aaaaaaaaaaaaaaaaa "+s);
Mom current = tree;
System.out.println("vvvvvvv : "+tree.data.keySet());
for (String str : s.split(" ")) {
System.out.println(str+" : " +current.data.keySet());
if (!current.data.containsKey(str)) {
System.out.println(" : done");
return new ArrayList<>();
} else {
System.out.println(" : forward");
current = current.data.get(str);
}
}
return new ArrayList<>(current.data.keySet());
}
}
je fait un arbre de possibilité mais quand j'utilise
Suggestion sug = new Suggestion();
sug.input("feur baka feur");
List<String> j = sug.get("feur baka");
Bukkit.broadcastMessage(j+"");
Suggestion sug = new Suggestion();
sug.input("feur baka feur");
List<String> j = sug.get("feur baka");
Bukkit.broadcastMessage(j+"");
vvvvvvv : [] feur : [] : done [] nnn : [feur] bbb : [feur] vvvvvvv : []
pourquoi ça efface dans get()
3 Replies
Loli lambda
Loli lambda2mo ago
si vous avez besoin de plus de détails pingez moi mais je comprend pas pourquoi ça fait ça ;-;
hydrolien
hydrolien2mo ago
@Loli lambda j'ai du mal a comprendre ce qui ne te convient pas dans le comportement de ton code. Tu a observé que le getter modifiais des données existantes ?
Loli lambda
Loli lambda2mo ago
j'ai trouver la solution depuis... merci quand meme
Want results from more Discord servers?
Add your server