java 中两个list集合如何去重,去重完的数据存入一个新的list
时间: 2023-08-25 15:52:13 浏览: 63
你可以使用Java中的Set集合来实现两个List集合的去重。Set是一个不允许有重复元素的集合,可以利用这个特性来去除重复数据。以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Main {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(3); // 重复元素
List<Integer> list2 = new ArrayList<>();
list
相关问题
java8将两个list集合去重
可以使用Java 8的Stream API来将两个list集合去重,具体实现代码如下:
```java
List<String> list1 = Arrays.asList("A", "B", "C", "D");
List<String> list2 = Arrays.asList("C", "D", "E", "F");
List<String> distinctList = Stream.concat(list1.stream(), list2.stream())
.distinct()
.collect(Collectors.toList());
System.out.println(distinctList);
```
上述代码中,使用了Stream.concat()方法将两个list集合合并成一个流,然后使用distinct()方法去重,最后使用Collectors.toList()方法将结果收集到一个新的list集合中。
使用Java把list集合中数据根据其中两个字段去重
可以使用Java 8中的stream和lambda表达式来实现根据两个字段去重。假设有一个包含实体类对象的列表,其中每个实体类对象包含两个字段:field1和field2,代码如下:
```java
List<Entity> list = Arrays.asList(
new Entity("a", 1),
new Entity("b", 2),
new Entity("a", 1),
new Entity("c", 3),
new Entity("b", 2)
);
```
可以使用以下代码实现根据字段field1和field2去重:
```java
List<Entity> uniqueList = list.stream()
.collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(e -> e.getField1() + e.getField2()))),
ArrayList::new
));
```
这里使用了Collectors.toCollection()方法,将元素放入TreeSet中,根据Comparator.comparing()中的lambda表达式来定义比较规则,实现根据字段field1和field2去重。然后再将结果转换为ArrayList的格式。
需要注意的是,需要在实体类中重写equals()和hashCode()方法,按照两个字段的顺序进行比较,才能正确地去重。