Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java list去重重复对象

作者:饮尽孤单   发布日期:2026-06-22   浏览:125

import java.util.*;

public class RemoveDuplicateObjects {
    public static void main(String[] args) {
        // 创建一个包含重复对象的列表
        List<MyObject> list = Arrays.asList(
            new MyObject(1, "A"),
            new MyObject(2, "B"),
            new MyObject(1, "A"), // 重复对象
            new MyObject(3, "C"),
            new MyObject(2, "B")  // 重复对象
        );

        // 方法1: 使用LinkedHashSet去重(保持插入顺序)
        Set<MyObject> uniqueSet = new LinkedHashSet<>(list);
        List<MyObject> uniqueList = new ArrayList<>(uniqueSet);

        // 输出去重后的列表
        System.out.println("去重后的列表 (方法1):");
        for (MyObject obj : uniqueList) {
            System.out.println(obj);
        }

        // 方法2: 使用Stream API去重(Java 8及以上)
        List<MyObject> uniqueListStream = list.stream()
            .distinct()
            .toList();

        // 输出去重后的列表
        System.out.println("去重后的列表 (方法2):");
        uniqueListStream.forEach(System.out::println);
    }
}

class MyObject {
    private int id;
    private String name;

    public MyObject(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        MyObject myObject = (MyObject) o;
        return id == myObject.id && Objects.equals(name, myObject.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, name);
    }

    @Override
    public String toString() {
        return "MyObject{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

解释说明:

  1. 创建包含重复对象的列表:我们创建了一个List<MyObject>,其中包含了几个重复的对象。
  2. 方法1:使用LinkedHashSet去重
    • LinkedHashSet会自动去除重复元素,并且保留插入顺序。
    • List转换为LinkedHashSet后再转回List,即可得到去重后的列表。
  3. 方法2:使用Stream API去重
    • stream().distinct()会根据对象的equals()hashCode()方法来去除重复元素。
    • 最后将结果收集到一个新的List中。
  4. MyObject
    • 为了使对象能够正确地去重,需要重写equals()hashCode()方法。这两个方法用于判断两个对象是否相等。
    • toString()方法用于方便输出对象信息。

通过这两种方法,可以有效地去除List中的重复对象。

上一篇:java volatile

下一篇:java bigdecimal比较大小的方法

大家都在看

java url decode

java判断是windows还是linux

java原始数据类型

java连接数据库的代码

java date类型比较大小

java djl

ubuntu 卸载java

es java api

java常用的设计模式有哪些

java list 查找

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站