如何解决如何识别哈希图中的重复值
是否有任何简单的方法来标识HashMap
中的重复值?
HashMap<Integer,String> map= new HashMap<Integer,String>();
map.put(1,"a");
map.put(2,"a");
map.put(3,"b");
我想将重复值保存在名为String duplicate
的变量中。
我想要输出a
。
谢谢大家的帮助,我将尽力为您提供提示。谢谢!
解决方法
尝试一下。
Map<Integer,String> map = Map.of(1,"a",2,"b",3,4,"c",5,6,7,"v");
- 获取所有值的集合。
- 遍历该集合的集合,删除遇到的每个值的第一个。这样只会将重复项留在集合中。
- 然后将它们打印为一组,显示重复项。
Collection<String> all = map.values();
new HashSet<>(all).forEach(all::remove);
System.out.println(new HashSet<>(all));
打印
[a,b]
,
为了在Hashmap中获取值,您需要对其进行迭代。然后,您只需将它们放在String的HashSet中。如果您在HashSet中已经找到任何值,则会重复进行。
,使用stream API,您可以执行类似的操作
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
//populate map here
....
//print all values that occur more then 1 time
System.out.println(map.values()
.stream()
.collect(Collectors.groupingBy(Function.identity(),Collectors.counting()))
.entrySet()
.stream()
.filter(e -> e.getValue() > 1)
.map(Map.Entry::getKey)
.collect(Collectors.toSet()));
输出
[a]
,
您可以遍历地图值(首先将它们放入列表中) 并通过检查第一个和最后一个索引特定元素是否不相同来查找列表中发生次数超过一次的元素。 如果不相同,则表示该值存在多次。
下面是使用Java Stream的代码。
列表值=新的ArrayList (map.values()); 设置重复项= values.stream()。filter(item-> values.indexOf(item)!= values.lastIndexOf(item))。collect(Collectors.toSet());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。