legongju.com
我们一直在努力
2024-12-28 20:52 | 星期六

Java set去重如何处理复杂对象

在Java中,使用Set去重时,如果涉及到复杂对象,需要重写对象的equals()和hashCode()方法。这是因为Set是基于这两个方法来判断对象是否相等的。以下是一个简单的示例:

  1. 首先,创建一个复杂对象类,例如Person:
public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 重写equals()方法
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }
        Person person = (Person) obj;
        return age == person.age && Objects.equals(name, person.name);
    }

    // 重写hashCode()方法
    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }

    // 添加getter和setter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
  1. 然后,在主类中使用Set去重:
import java.util.HashSet;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        Set personSet = new HashSet<>();

        Person person1 = new Person("Alice", 30);
        Person person2 = new Person("Bob", 25);
        Person person3 = new Person("Alice", 30); // 与person1具有相同的属性和值

        personSet.add(person1);
        personSet.add(person2);
        personSet.add(person3);

        System.out.println("PersonSet size: " + personSet.size()); // 输出:PersonSet size: 2
    }
}

在这个示例中,我们创建了一个Person类,并重写了equals()和hashCode()方法。这样,当我们使用Set去重时,Set会根据这些方法来判断对象是否相等。在这个例子中,person3与person1具有相同的属性和值,但它们被视为不同的对象,因为它们的内存地址不同。因此,Set的大小为2。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/54652.html

相关推荐

  • Java parseInt方法如何处理科学计数法

    Java parseInt方法如何处理科学计数法

    在 Java 中,Integer.parseInt() 方法用于将字符串解析为整数。当输入的字符串表示一个科学计数法时,parseInt() 方法会抛出一个 NumberFormatException 异常。<...

  • Java中parseInt转换有哪些边界情况

    Java中parseInt转换有哪些边界情况

    在Java中,Integer.parseInt()方法用于将字符串转换为整数。然而,在使用这个方法时,我们需要特别注意一些边界情况,以避免出现错误或得到意外的结果。以下是一...

  • Java parseInt方法有哪些常见错误

    Java parseInt方法有哪些常见错误

    在使用Java的Integer.parseInt()方法时,可能会遇到以下几种常见错误: 类型转换错误:parseInt()方法只能将字符串转换为整数,不能直接将其他类型的数值转换为整...

  • Java parseInt方法有哪些使用限制

    Java parseInt方法有哪些使用限制

    parseInt 是 Java 中的一个方法,用于将字符串解析为整数。在使用 parseInt 方法时,需要注意以下几点限制: 参数类型:parseInt 方法的参数必须是 String 类型。...

  • Java set去重在实际应用中的表现

    Java set去重在实际应用中的表现

    Java中的Set集合是一个无序且不包含重复元素的集合。在实际应用中,Set去重被广泛应用于数据清洗、去重查询等场景。以下是Set去重在实际应用中的一些表现: 数据...

  • Java set去重对数据类型要求

    Java set去重对数据类型要求

    Java中的Set集合用于存储不重复的元素。当你将一个对象添加到Set中时,Set会自动检查该对象是否已经存在。如果存在,则不会将其添加到Set中。这意味着Set对数据类...

  • Java set去重性能如何

    Java set去重性能如何

    Java中的Set是一种不允许重复元素的集合。它的主要实现类有HashSet和LinkedHashSet等。Set去重的性能取决于具体的数据结构和实现方式。 HashSet:基于哈希表实现...

  • Java反编译命令怎样运用

    Java反编译命令怎样运用

    Java反编译命令主要用于将Java字节码文件(.class)转换回源代码(.java)。这可以帮助您更好地理解代码的结构和功能。要使用Java反编译命令,您需要安装一个反编...