gpt4 book ai didi

通过 HashMap 进行 Java 迭代

转载 作者:行者123 更新时间:2023-11-29 06:50:22 27 4
gpt4 key购买 nike

我正在为 java HashMap 苦苦挣扎。我想将 translationList 作为带字符串的数组返回。示例:word : "translated word".

主要类:

public static void main(String[] args) {
Dictionary dictionary = new Dictionary();
dictionary.add("apina", "monkey");
dictionary.add("banaani", "banana");
dictionary.add("cembalo", "harpsichord");

ArrayList<String> translations = dictionary.translationList();
for(String translation: translations) {
System.out.println(translation);
}
}

字典类:

private HashMap<String, String> dictionary = new HashMap<String, String>();
public Dictionary(){};
public String translate(String word){
if(dictionary.containsKey(word)){
return dictionary.get(word);
}
return null;
}
public void add(String word, String translation){
dictionary.put(word,translation);
}
public int amountOfWords() {
return dictionary.size();
}
public ArrayList<String> translationList(){
for ( String key : dictionary.keySet() ) {
if(translationList().size()<dictionary.size()){
translationList().add(key+" = "+dictionary.get(key));
}
}
return translationList();
}

Java 返回:

Exception in thread "main" java.lang.StackOverflowError
at java.base/java.util.HashMap$KeyIterator.<init>(HashMap.java:1515)
at java.base/java.util.HashMap$KeySet.iterator(HashMap.java:917)
at Dictionary.translationList(Dictionary.java:21)
at Dictionary.translationList(Dictionary.java:22)

感谢您的帮助:)

最佳答案

你的 translationList方法正在调用自身,导致无限递归调用和 StackOverflowError .

你可能打算写这样的东西:

public List<String> translationList(){
List<String> list = new ArrayList<>();
for ( String key : dictionary.keySet() ) {
list.add(key+" = "+dictionary.get(key));
}
return list;
}

public List<String> translationList(){
List<String> list = new ArrayList<>();
for ( Map.Entry<String,String> entry : dictionary.entrySet() ) {
list.add(entry.getKey()+" = "+entry.getValue());
}
return list;
}

您必须先创建一个 ArrayList然后添加 String到它了。除此之外,if (translationList().size()<dictionary.size())条件是没有意义的,即使没有递归调用。

关于通过 HashMap 进行 Java 迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50448787/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com