Java 为什么这些值会重复?

Java 为什么这些值会重复?,java,string,hashmap,Java,String,Hashmap,问题是在输出中,单词“聪明”被添加了两次。你能告诉我为什么相同键的重复值被添加两次吗。提前感谢您的帮助 package HashMap; import java.util.HashMap; import java.util.Set; public class Thesaurus { HashMap<String, String> words =new HashMap<String, String>(); public void add(String

问题是在输出中,单词“聪明”被添加了两次。你能告诉我为什么相同键的重复值被添加两次吗。提前感谢您的帮助

package HashMap;

import java.util.HashMap;
import java.util.Set;

public class Thesaurus {
    HashMap<String, String> words =new HashMap<String, String>();

    public void add(String x,String y)
    {
        if (!words.containsKey(x))
            words.put(x, y);
        else if (!words.containsValue(y))
            words.put(x, words.get(x) + " " + y + " ");
    }
    public void display()
    {
        System.out.println(words);
    }
    public static void main(String[] args) {
        Thesaurus tc = new Thesaurus();
        tc.add("large", "big");
        tc.add("large", "humoungus");
        tc.add("large", "bulky");
        tc.add("large", "broad");
        tc.add("large", "heavy");
        tc.add("smart", "astute");
        tc.add("smart", "clever");
        tc.add("smart", "clever");

        tc.display();
    }
}

如果问题出在您的
上,则为else。您正在检查
!words.containsValue(y)
,它将检查是否有一个值
聪明的
,而没有。只有
机敏聪明
。这将导致执行
words.put(x,words.get(x)+++y+)
,并因此将
智能
添加到
智能
的索引中

您的
add
方法只能确保单个单词值的唯一性,而不是多个单词值的唯一性


您可以通过将
HashMap
单词重新定义为
HashMap
并使用该类上的方法来解决此问题;您必须更改
display
方法,以便打印出
哈希集的元素

您的
,否则会出现问题。您正在检查
!words.containsValue(y)
,它将检查是否有一个值
聪明的
,而没有。只有
机敏聪明
。这将导致执行
words.put(x,words.get(x)+++y+)
,并因此将
智能
添加到
智能
的索引中

您的
add
方法只能确保单个单词值的唯一性,而不是多个单词值的唯一性


您可以通过将
HashMap
单词重新定义为
HashMap
并使用该类上的方法来解决此问题;您必须更改
display
方法才能打印出
HashSet

的元素您是否尝试过一步一步地调试它?您尝试过一步一步地调试它吗?那么我应该如何解决问题…我应该如何重写我的equals方法?重写equals方法在这里没有真正的帮助。您需要使用实际的数据结构来保存单词,并且仅在需要时将其转换为输出。一个合适的数据结构应该是一个
HashMap
,如答案中所述(我在后面添加了它),其中每个元素只能出现一次。如果我将值设置为hashset,我将如何修改add方法?仅当您编写我目前正在处理的代码时。相信我,你不想这么做。那么我应该如何解决这个问题…我应该如何重写我的equals方法?重写equals方法在这里并没有真正的帮助。您需要使用实际的数据结构来保存单词,并且仅在需要时将其转换为输出。一个合适的数据结构应该是一个
HashMap
,如答案中所述(我在后面添加了它),其中每个元素只能出现一次。如果我将值设置为hashset,我将如何修改add方法?仅当您编写我目前正在处理的代码时。相信我,你不会想那么做的。
{smart=astute clever  clever , large=big humoungus  bulky  broad  heavy }