📅  最后修改于: 2023-12-03 14:51:45.654000             🧑  作者: Mango
LinkedHashSet
中删除自定义对象?如果我们要从 LinkedHashSet
集合中删除一个自定义对象,我们需要按照以下步骤进行操作:
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);
}
}
hashCode()
方法。当我们使用 LinkedHashSet
时,我们需要确保如果两个自定义对象的 equals()
方法返回值相等,那么它们的 hashCode()
方法也必须相等。因为 LinkedHashSet
内部实现是基于哈希表的,哈希表根据对象的哈希码来快速查找和比较对象。例如:@Override
public int hashCode() {
return Objects.hash(name, age);
}
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
中删除自定义对象的步骤和方法。