方法一:使用HashMap和HashSet
- 创建一个HashMap,用于存储集合中的元素及其出现次数。
Map<String, Integer> map = new HashMap<>();
- 遍历集合,将每个元素作为键,将其出现次数作为值添加到HashMap中。
for (String item : list) {map.put(item, map.getOrDefault(item, 0) + 1);
}
- 遍历HashMap,找到出现次数大于1的元素及其出现次数。
for (Map.Entry<String, Integer> entry : map.entrySet()) {if (entry.getValue() > 1) {System.out.println("重复元素:" + entry.getKey() + ",出现次数:" + entry.getValue());}
}
方法二:使用Java 8的Stream API
- 首先,将列表转换为Stream。
Stream<String> stream = list.stream();
- 使用
collect()
方法将Stream转换为Map,其中键为元素,值为出现次数。
Map<String, Integer> map = stream.collect(Collectors.toMap(list::contains, String::equals, (a, b) -> a + 1));
- 遍历HashMap,找到出现次数大于1的元素及其出现次数。
for (Map.Entry<String, Integer> entry : map.entrySet()) {if (entry.getValue() > 1) {System.out.println("重复元素:" + entry.getKey() + ",出现次数:" + entry.getValue());}
}
以上两种方法都可以用于获取集合中重复数据的值和数量。方法一是基于HashMap和HashSet的实现,而方法二是基于Java 8的Stream API。可以根据实际需求和性能要求选择合适的方法。