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 }