java对象list去重复的方法
在Java中,有多种方法可以去重一个对象列表。下面以示例代码的方式介绍其中的几种方法。
1. 使用Set集合去重
```java
import java.util.*;
public class Main
public static void main(String[] args)
List<String> list = Arrays.asList("A", "B", "A", "C", "B", "D");
Set<String> set = new HashSet<>(list);
List<String> distinctList = new ArrayList<>(set);java stream
System.out.println(distinctList);
}
```
这种方法使用HashSet集合来去重。首先将列表转换为Set,然后再将Set转换为List,即可得到去重后的列表。需要注意的是,Set是无序的,所以得到的去重后的列表的顺序可能与输入列表的顺序不同。
2. 使用LinkedHashSet保持顺序去重
```java
import java.util.*;
public class Main
public static void main(String[] args)
List<String> list = Arrays.asList("A", "B", "A", "C", "B", "D");
Set<String> set = new LinkedHashSet<>(list);
List<String> distinctList = new ArrayList<>(set);
System.out.println(distinctList);
}
```
这种方法与上一个方法类似,只是使用了LinkedHashSet来保持元素的顺序。LinkedHashSet是HashSet的子类,除了去重外,还能够保持元素的插入顺序。
3. 使用Java 8的Stream API
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main
public static void main(String[] args)
List<String> list = Arrays.asList("A", "B", "A", "C", "B", "D");
List<String> distinctList = list.stream(.distinct(.List();
System.out.println(distinctList);
}
```
Stream API是在Java 8中引入的新特性,可以通过链式调用一系列操作来处理数据。在这个例子中,我们可以通过调用distinct(方法去重,然后通过collect(方法将结果收集到一个新的列表中。
需要注意的是,以上的方法都是针对对象列表的去重。如果是基本类型的列表(如int、long、double等),可以使用Java 8的Stream API的toSet(或toCollection(方法进行去重。
以上是几种常用的方法去重一个对象列表,每种方法都有其优缺点。在选择使用哪个方法时,需要根据实际情况做出选择,比如是否保持顺序、是否需要在多线程环境下使用等。同时,如果对象类没有实现equals(和hashCode(方法,去重操作可能会产生意外的结果,所以需要根据具体情况来决定是否需要重写这两个方法。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。