java list里如何剔除相同的对象?
时间: 2023-05-03 15:05:53 浏览: 152
在Java中,可以使用HashSet或者TreeSet来剔除Java List中的相同对象。
HashSet使用哈希表实现,不保证元素的顺序,TreeSet使用红黑树实现,元素有序。但是它们都具有一点,就是不能包含重复的元素,当往其中加入元素时,如果发现元素已经存在,就直接返回。
例如,假设有一个类Person,我们想要剔除List<Person>中相同的对象,可以这样做:
1.使用HashSet:
```
List<Person> list = new ArrayList<>();
//添加元素...
Set<Person> set = new HashSet<>(list);
list = new ArrayList<>(set);
```
首先将List中的元素放入Set中,然后再将Set中的元素取出放回List中,由于Set中不允许存在重复元素,因此剔除了List中的相同对象。
2.使用TreeSet:
```
List<Person> list = new ArrayList<>();
//添加元素...
Set<Person> set = new TreeSet<>(Comparator.comparing(Person::getId));
set.addAll(list);
list = new ArrayList<>(set);
```
同样地,先将List中的元素放入TreeSet中,由于TreeSet是有序的集合,需要指定比较器,以便对元素进行排序。如果我们想根据Person的id进行比较和排序,可以这样做:Comparator.comparing(Person::getId)。最后再将元素从TreeSet中取出放到List中就可以了。
以上就是剔除Java List中相同对象的方法。如果你希望只对某个字段进行比较,可以在Comparator中传入相应的比较函数,以实现更精细化的剔除操作。