Collection Utils删除重复对象

时间:2014-02-24 12:39:17

标签: java performance

我有一个Object Person(id,name)。

public class Person {


/** Personid. **/
private Long personId;

/** Person Adresse. **/
private String adresse

// Getters, Setters

如何使用CollectionUtils删除重复的人(具有相同的ID)? 例如Person1(10,aaaa),Person2(10,bbbb),Person3(20,cccc) 结果=> Person1(10,aaaa),Person3(30,cccc)

编辑:

此解决方案使用Set和overrinding equals和hashcode:

List<Person> oldPerson = new ArrayList<>();
//oldPerson.add ...

Set<Person> newPerson = new HashSet<>(oldPerson);

List<Person> theRightPerson = new ArrayList<>(newPerson);

我正在寻找的解决方案是:

 List<Person> theRightPerson = (List<Person>) CollectionUtils.collect(oldPerson, new Transformer() {

        @Override
        public Object transform(Object input) {
            // TODO Auto-generated method stub
            return null;
        }
    })

1 个答案:

答案 0 :(得分:0)

重写equals和hashcode方法并使用HashSet会更容易。如果您无法编辑类的来源,则需要迭代列表并根据条件比较每个项目。

How to remove duplicate objects in a List<MyObject> without equals/hashcode?