已知从数据库获取的数据是根据id倒叙的,使用java stream流去重数据库查询返回的集合怎么写,使用String类型的号码去重
时间: 2024-11-04 08:14:40 浏览: 27
基于Java的饭店管理系统(亮点是用余弦相似度算法写了个推荐菜的功能,含数据库文件).zip
5星 · 资源好评率100%
在Java中,你可以使用`Stream` API结合`Collectors.groupingBy()`函数以及`distinct()`方法来对依据ID倒序获取到的集合进行去重处理。假设你有一个`List<String>`列表,其中包含电话号码,每个元素代表一个独立的记录,你可以这样做:
```java
import java.util.*;
import java.util.stream.Collectors;
// 假设你已经有了一个按ID倒序排列的电话号码列表
List<String> phoneNumbers = ... // 例如 List<String> numbers = new ArrayList<>(/* 数据库查询结果 */).sorted(Comparator.reverseOrder());
// 使用Stream去重,只保留唯一的字符串
List<String> distinctNumbers = phoneNumbers.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.toList()))
.values().stream() // 获取所有唯一值的流
.flatMapToInt(Collectors.toList()) // 将流转换回Integers并去除重复
.boxed() // 因为我们需要的是String,所以再转换回List
.distinct() // 最终过滤出唯一的String
.collect(Collectors.toList());
```
上述代码首先按照ID(这里实际是电话号码,但习惯上用ID表示)分组,然后获取每个组(每个组只有一个元素,因为我们已经倒序并且要去重)的唯一元素。最后将所有的唯一元素合并成一个新的列表。
阅读全文