SortedSet - 排序和删除重复项

时间:2016-11-29 16:07:31

标签: java set equals comparator sortedset

我有一个具有多个属性的类:

class Person {
   String firstName;
   String lastName;
   String country;
   String hometown;
}

我想要删除所有重复项(基于firstName和lastName)并按国家/地区和家乡排序。

我尝试在Person类中实现equals()和hashCode(),然后编写Comparator来构造SortedSet,但Set也使用Comparator进行相等。有什么方法可以实现这个目标吗?

public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Person other = (Person) obj;
    if (firstName == null) {
        if (other.firstName != null)
            return false;
    } else if (!firstName.equals(firstName.type))
        return false;
    if (lastName == null) {
        if (other.lastName != null)
            return false;
    } else if (!lastName.equals(other.lastName))
        return false;
    return true;
}

Set<Person> uniquePersonList = new TreeSet<>(
        Comparator.comparing(Person::getCountry)
                        .thenComparing(Person::getHometown));

0 个答案:

没有答案