反转HashMap

时间:2019-12-02 15:45:30

标签: java hashmap

我有一个HashMap,可以将两个Strings转换为单词,然后将单词添加到地图中。我有它,以便一个键可以指向多个值。现在,我想做一个循环来反转表,以便所有值都指向键。不要烦恼指向相反的多个值的键。

Map<Word,Set<Word>> map = new HashMap<Word,Set<Word>>();

public void add(Word t, Word m) {
    if(map.containsKey(t)) {
        Set<Word> newM = map.get(t);
        newM.add(m);
    } else {
        Set<Word> newSet = new HashSet<>();
        newSet.add(m);
        map.put(t, newSet);
    }

}

public void add(String t, String m) {
    add(new Word(t), new Word(m));
}

public Dictionary inverse() {

}

1 个答案:

答案 0 :(得分:1)

您面临的主要问题是常见的滥用地图行为。就您而言,您确实没有地图。您有一些相似的东西,因此您决定使用地图。您真正拥有的是一组DictionaryEntry对象,其中DidctionaryEntry看起来像这样:

public class DisctionaryEntry {

    private String word;
    private Set<String> translations;

}

我认为,使用该数据结构并为其添加一个addTranslation(String translation)方法,您的问题就变得很明显。