在这个问题中,我必须有一个包含键和字符串值的映射,以查看多个键映射到相同的值。换句话说,如果没有两个键映射到相同的值,那么我的方法应该返回true。我试图解决这个问题的方法是将所有地图放入一个集合中,并检查每个元素以查看是否有相同值的两个副本;但是,这似乎并没有为我工作。任何建议将不胜感激,谢谢。查找多个键映射到相同的值
提示:
写一个接受字符串的字符串作为参数的地图,如果没有两个键映射到相同的值(和假如有两个或更多个键也映射到返回true的方法isUnique设置相同的值)。例如,调用你的方法在下面的映射将返回true:
{马蒂=斯特普,斯图尔特= Reges,杰西卡=米勒,阿曼达=营,哈尔=帕金斯}
调用它下面的地图上会返回false,因为两个映射的帕金斯和Reges的:
{肯德里克=帕金斯,斯图尔特= Reges,杰西卡=米勒,布鲁斯= Reges,哈尔=帕金斯}
空地图被认为是独一无二的,所以你的方法应该返回true,如果传递一个空的地图。
我尝试:
public static boolean isUnique(Map<String, String> input) {
Collection<String> values = input.values(); // stores all the values into a collection
for (String names: values) { // goes through each string to see if any duplicates
Iterator<String> wordList = values.iterator(); // iterates words in values collection
int repeat = 0; // counts number of repeats
// goes through each elem to compare to names
if (wordList.hasNext()) {
if (wordList.next().equals(names)) {
repeat++;
}
}
if (repeat > 1) { // if more than one copy of the value exists = multiple keys to same value
return false; // If multiple copies of same value exists
}
}
return true; // all unique values
}
难道我们不会将值放入HashSet而不是键中,因为我们试图找到重复的映射,所以HashSet可以摆脱? –
@JackL。我将重复值放入'Set'中。 'input.get(key)'返回一个'V'值。 –
我现在看到它;我的错。 –