📜  如何从 LinkedHashSet 中删除用户定义的对象?(1)

📅  最后修改于: 2023-12-03 14:51:45.654000             🧑  作者: Mango

如何从 LinkedHashSet 中删除自定义对象?

如果我们要从 LinkedHashSet 集合中删除一个自定义对象,我们需要按照以下步骤进行操作:

  1. 实现自定义对象的 equals(Object o) 方法。在 LinkedHashSet 中,对象的唯一性是基于 equals() 方法的比较结果来判断的。所以,我们需要在自定义对象中重写 equals() 方法,来比较对象的属性是否相等。例如:
public class Person {
    private String name;
    private int age;

    // getters/setters

    @Override
    public boolean equals(Object o) {
        if (o == null) {
            return false;
        }
        if (o == this) {
            return true;
        }
        if (o.getClass() != getClass()) {
            return false;
        }
        Person otherPerson = (Person) o;
        return Objects.equals(name, otherPerson.getName()) &&
                age == otherPerson.getAge();
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}
  1. 重写自定义对象的 hashCode() 方法。当我们使用 LinkedHashSet 时,我们需要确保如果两个自定义对象的 equals() 方法返回值相等,那么它们的 hashCode() 方法也必须相等。因为 LinkedHashSet 内部实现是基于哈希表的,哈希表根据对象的哈希码来快速查找和比较对象。例如:
@Override
public int hashCode() {
    return Objects.hash(name, age);
}
  1. LinkedHashSet 中删除自定义对象。当我们要从 LinkedHashSet 集合中删除自定义对象时,我们要先确保我们使用的是包含自定义对象的 LinkedHashSet,而不是包含基本类型或 String 等对象的 LinkedHashSet。然后调用 remove(Object o) 方法即可,例如:
LinkedHashSet<Person> personSet = new LinkedHashSet<>();
personSet.add(new Person("Jane", 20));
personSet.add(new Person("John", 30));

Person personToRemove = new Person("Jane", 20);
personSet.remove(personToRemove);

以上就是如何从 LinkedHashSet 中删除自定义对象的步骤和方法。