千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > java找出list中重复数据

java找出list中重复数据

来源:千锋教育
发布人:xqq
时间: 2023-07-31 11:56:22 1690775782

Java找出List中重复数据

在Java中,如果我们需要找出一个List中的重复数据,可以使用以下几种方法:

1. 使用循环和集合操作:

遍历List中的每个元素,将其添加到一个新的Set集合中。如果添加失败,说明该元素已经存在于Set中,即为重复数据。以下是示例代码:

`java

List list = Arrays.asList("A", "B", "C", "A", "D", "B");

Set set = new HashSet<>();

List duplicates = new ArrayList<>();

for (String element : list) {

if (!set.add(element)) {

duplicates.add(element);

}

}

System.out.println("重复数据:" + duplicates);

`

运行结果为:重复数据:[A, B]

该方法的时间复杂度为O(n),其中n为List的大小。

2. 使用Java 8的Stream API:

Java 8引入了Stream API,可以使用Stream的distinct()和filter()方法来找出重复数据。以下是示例代码:

`java

List list = Arrays.asList("A", "B", "C", "A", "D", "B");

List duplicates = list.stream()

.distinct()

.filter(element -> list.indexOf(element) != list.lastIndexOf(element))

.collect(Collectors.toList());

System.out.println("重复数据:" + duplicates);

`

运行结果为:重复数据:[A, B]

该方法的时间复杂度为O(n^2),其中n为List的大小。

3. 使用Java 8的Stream API和Collectors.groupingBy()方法:

可以使用Stream的collect()方法结合Collectors.groupingBy()方法来将List中的元素按照其出现次数进行分组,然后筛选出出现次数大于1的元素。以下是示例代码:

`java

List list = Arrays.asList("A", "B", "C", "A", "D", "B");

Map frequencyMap = list.stream()

.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

List duplicates = frequencyMap.entrySet().stream()

.filter(entry -> entry.getValue() > 1)

.map(Map.Entry::getKey)

.collect(Collectors.toList());

System.out.println("重复数据:" + duplicates);

`

运行结果为:重复数据:[A, B]

该方法的时间复杂度为O(n),其中n为List的大小。

通过以上方法,我们可以轻松地找出List中的重复数据。根据实际需求和数据规模的不同,选择合适的方法可以提高程序的效率和性能。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT