博客
关于我
List去除重复数据的五种方式
阅读量:794 次
发布时间:2023-02-05

本文共 3015 字,大约阅读时间需要 10 分钟。

Java ArrayList 中去重的五种方法

1. 使用 LinkedHashSet 删除重复数据

LinkedHashSet 是处理 Java ArrayList 重复数据的理想选择。它不仅能自动删除重复项,还能保持数据的原始顺序。这使得它在数据迁移过程中特别有用。

示例代码

import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedHashSet;public class ArrayListExample {    public static void main(String[] args) {        ArrayList
numbersList = new ArrayList<>(Arrays.asList( 1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8 )); System.out.println("原始列表:" + numbersList); LinkedHashSet
hashSet = new LinkedHashSet<>(numbersList); ArrayList
listWithoutDuplicates = new ArrayList<>(hashSet); System.out.println("去重后的列表:" + listWithoutDuplicates); }}

输出结果

原始列表:[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]去重后的列表:[1, 2, 3, 4, 5, 6, 7, 8]

2. 使用 Java 8 Stream API 去重

Java 8 引入了 Stream API,提供了更加简洁的去重方法。通过 stream().distinct() 可以轻松实现去重操作。

示例代码

import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;public class ArrayListExample {    public static void main(String[] args) {        ArrayList
numbersList = new ArrayList<>(Arrays.asList( 1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8 )); System.out.println("原始列表:" + numbersList); List
listWithoutDuplicates = numbersList.stream() .distinct() .collect(Collectors.toList()); System.out.println("去重后的列表:" + listWithoutDuplicates); }}

输出结果

原始列表:[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]去重后的列表:[1, 2, 3, 4, 5, 6, 7, 8]

3. 使用 HashSet 判断重复项

HashSet 的特性是无法添加重复数据的。可以利用这一点,结合 ArrayList 本身的循环机制来实现去重。

示例代码

private static void removeDuplicate(List
list) { HashSet
set = new HashSet<>(list.size()); ArrayList
result = new ArrayList<>(list.size()); for (String str : list) { if (set.add(str)) { result.add(str); } } list.clear(); list.addAll(result);}

使用方法

List
originalList = Arrays.asList("a", "a", "b", "b", "c");removeDuplicate(originalList);System.out.println(originalList); // [a, a, b, b, c]

4. 使用 List 的 contains 方法手动去重

通过手动遍历列表并使用 contains 方法来检查元素是否已经存在,可以实现去重的功能。这种方法适用于较小的数据量。

示例代码

private static void removeDuplicate(List
list) { ArrayList
result = new ArrayList<>(list.size()); for (String str : list) { if (!result.contains(str)) { result.add(str); } } list.clear(); list.addAll(result);}

使用方法

List
originalList = Arrays.asList("a", "a", "b", "b", "c");removeDuplicate(originalList);System.out.println(originalList); // [a, a, b, b, c]

5. 双重循环手动去重

通过双重循环遍历列表,检查每个元素是否是重复项,并逐一删除。

示例代码

for (int i = 0; i < list.size(); i++) {    for (int j = 0; j < list.size(); j++) {        if (i != j && list.get(i).equals(list.get(j))) {            list.remove(list.get(j));        }    }}

注意事项

这种方法可能会导致列表大小在循环过程中发生变化,影响性能。因此,通常不推荐在实际应用中使用。


通过以上五种方法,可以根据具体需求选择最适合的去重方式。每种方法都有其优缺点,选择时需综合考虑性能、代码复杂度和数据规模。

转载地址:http://fkufk.baihongyu.com/

你可能感兴趣的文章
Linux(10):安装mysql5.7
查看>>
Linux(11):设置固定ip
查看>>
Linux(12):上传下载命令rz和sz
查看>>
Linux(13):压缩和解压缩命令
查看>>
Linux(14):端口的开放与管理
查看>>
Linux(1):文件和目录
查看>>
Linux(2):Linux命令概述
查看>>
Linux(3):Linux命令-文件管理
查看>>
Linux(4):Linux命令-用户、权限管理
查看>>
Linux(5):Linux命令-系统管理
查看>>
Linux(6):Linux网络命令
查看>>
Linux(7):VIM的使用
查看>>
Linux(8):安装JDK
查看>>
Linux(9):安装Tomcat
查看>>
Linux(centos7)上安装最新版R3.4.1
查看>>
Linux(CentOS)安装 Nginx
查看>>
Linux(RadHat)基础学习—软件安装
查看>>
linux(ubuntu)中crontab定时器命令详解 以及windows中定时器
查看>>
linux(乌班图)修改apt下载源
查看>>
Linux,启动java程序的通用脚本sh
查看>>