list集合不用set去重
时间: 2024-11-05 11:09:59 浏览: 29
在Java中,如果你想要在List集合中去重,使用Set并不是最佳选择,因为Set不允许重复元素,而List允许有重复元素。不过,你可以采用其他方式:
1. **循环遍历**: 可以创建一个新的List,然后遍历原List,对于每个元素,如果不在新List中则添加进去。这种方法适用于元素不是复杂结构且性能要求不高的情况。
```java
List<String> uniqueList = new ArrayList<>();
for (String item : originalList) {
if (!uniqueList.contains(item)) {
uniqueList.add(item);
}
}
```
2. **流API**: 如果你在Java 8及以上版本,可以使用流的distinct()方法,但需要注意的是这会创建一个新的流并返回,不会改变原有列表。
```java
List<String> distinctList = originalList.stream()
.distinct()
.collect(Collectors.toList());
```
3. **自定义比较逻辑**: 对于复杂类型的对象,你可能需要创建一个equals()和hashCode()方法的实现来进行去重。例如,如果一个Person对象由姓名和年龄构成,你需要基于这两个属性确定是否重复。
```java
List<Person> uniquePeople = originalPeople.stream()
.distinct(Comparator.comparing(Person::getNameAndAge))
.collect(Collectors.toList());
```
阅读全文