当前位置:网站首页>获取list集合中重复的元素
获取list集合中重复的元素
2022-07-29 12:12:00 【妃宫千早】
方法1
List<String> words = Arrays.asList("a", "b", "c", "d", "a", "d");
List<String> results = HashMultiset.create(words).entrySet().stream()
.filter(w -> w.getCount() > 1)
.map(Multiset.Entry::getElement)
.collect(Collectors.toList());
System.out.println(results);
方法2
可以修改返回值 返回去重的集合
public static <E> List<E> getListDuplicateElements(List<E> list){
List<E> words = list;
Set<E> repeated = new HashSet<>();
List<E> results = new ArrayList<>();
for (E word : words) {
if (!repeated.add(word)) {
results.add(word);
}
}
return results;
}
方法3
导入guava依赖
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0-jre</version>
</dependency>
List<String> words = Arrays.asList("a", "b", "c", "d", "a", "d");
List<String> results = new ArrayList<>();
for (Multiset.Entry<String> entry : HashMultiset.create(words).entrySet()) {
if (entry.getCount() > 1) {
results.add(entry.getElement());
}
}
System.out.println(results);
Lambda 来使用guava
List<String> words = Arrays.asList("a", "b", "c", "d", "a", "d");
List<String> results = HashMultiset.create(words).entrySet().stream()
.filter(w -> w.getCount() > 1)
.map(Multiset.Entry::getElement)
.collect(Collectors.toList());
System.out.println(results);
方法4
public List getRepeatList(List list) {
List list2 = new ArrayList();
for (int i = 0; i < list.size(); i++) {
for (int j = i + 1; j < list.size(); j++) {
if (list.get(i) !="" && list.get(i).equals(list.get(j))) {
list2.add(list.get(i));
break;
}
}
}
return list2;
}
/** * 获取list 集合重复元素 * * @param list * @param <E> * @return */
public static <E> List<E> getDuplicateElements(List<E> list) {
return list.stream() .filter( i -> i!="") // list 对应的 Stream 并过滤""
.collect(Collectors.toMap(e -> e, e -> 1, Integer::sum)) // 获得元素出现频率的 Map,键为元素,值为元素出现的次数
.entrySet()
.stream() // 所有 entry 对应的 Stream
.filter(e -> e.getValue() > 1) // 过滤出元素出现次数大于 1 (重复元素)的 entry
.map(Map.Entry::getKey) // 获得 entry 的键(重复元素)对应的 Stream
.collect(Collectors.toList()); // 转化为 List
}
题外
//定义一个100元素的集合,包含A-Z
List<String> list = new LinkedList<>();
for (int i =0;i<100;i++){
list.add(String.valueOf((char)('A'+Math.random()*('Z'-'A'+1))));
}
System.out.println(list);
//统计集合重复元素出现次数,并且去重返回hashmap
Map<String, Long> map = list.stream().
collect(Collectors.groupingBy(Function.identity(),Collectors.counting()));
System.out.println(map);
//由于hashmap无序,所以在排序放入LinkedHashMap里(key升序)
Map<String, Long> sortMap = new LinkedHashMap<>();
map.entrySet().stream().sorted(Map.Entry.comparingByKey()).
forEachOrdered(e -> sortMap.put(e.getKey(), e.getValue()));
System.out.println(sortMap);
//获取排序后map的key集合
List<String> keys = new LinkedList<>();
sortMap.entrySet().stream().forEachOrdered(e -> keys.add(e.getKey()));
System.out.println(keys);
//获取排序后map的value集合
List<Long> values = new LinkedList<>();
sortMap.entrySet().stream().forEachOrdered(e -> values.add(e.getValue()));
System.out.println(values);
已逗号隔开返回字符串
String collect = name.stream().map(String::valueOf).collect(Collectors.joining(","));
过滤条件
List<Integer> collect = list.stream().filter(item -> item >= 1 && item <= 10).collect(Collectors.toList());
边栏推荐
- 593. 有效的正方形 : 简单几何运用题
- WordPress 固定链接设置
- Based article 】 【 learn with Rust | Rust, variables and data types
- 命里有时终须有--记与TiDB的一次次擦肩而过
- SQL clock in daily DAY 23 丨 】 the number of students have different subjects to test difficulty simple 】 【
- piglit_get_gl_enum_from_name 参数遍历
- SQL clock 】 【 daily DAY 21 丨 report the state of the system date of continuous difficulty difficult 】 【
- 惠及6亿人 投资98亿 沿江高铁武宜段最新进展来了!
- WPF 实现平移控件
- TiFlash 源码阅读(五) DeltaTree 存储引擎设计及实现分析 - Part 2
猜你喜欢

ECCV 2022 | 基于关系查询的时序动作检测方法

CSDN TOP1 "a virgo program ape" how to become a blogger, millions of fans writing

PHP 基础知识

TiDB升级与案例分享(TiDB v4.0.1 → v5.4.1)

我和 TiDB 的故事 | 缘份在,那就终是能相遇的

峰米V10、极米Rs Pro2及当贝X3 Pro究竟孰优孰劣?

考完PMP后有什么益处

通过递归的方式实现树形结构
Based article 】 【 learn with Rust | Rust function and process control, rounding

多元宇宙:重塑新商业格局
随机推荐
命里有时终须有--记与TiDB的一次次擦肩而过
Squarespace 和 WordPress 的区别
1.4、栈
【每日SQL打卡】DAY 20丨查询结果的质量和占比【难度简单】
金仓数据库KingbaseES安全指南--6.8. SSPI身份验证
MarkDown Advanced Syntax Manual
PL/SQL 面向对象
【每日SQL打卡】DAY 22丨平均售价【难度中等】
【每日SQL打卡】DAY 27丨每次访问的交易次数【难度困难-提前放出来】
GDB使用详解
piglit_get_gl_enum_from_name 参数遍历
【第三次自考】——总结
"Qidong well day lily" is the national geographical indications protection products?Ants investigation on July 29, the answer
Hugo NexT V4 介绍
解决 Chrome 浏览器被毒霸篡改问题
Basic knowledge of redis database learning - basic, commonly used
QCon大会广州站它来了!独家定制双肩背包等你领取!
PL/SQL 集合
【多线程】——Callable创建多线程
redis数据库基本知识学习——基础、常用