I'm struggling with a java HashMap. I want to return translationList as an array with strings. Example: word : "translated word".
Main class:
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);
}
}
Dictionary class:
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 returns:
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)
Thanks for help :)
translationList()method instead of creating an actual list and adding to it. Why?