java两个list字符串合并并取出不重复的数据使用stream流
时间: 2024-01-28 17:02:58 浏览: 154
可以使用Java 8的Stream流来实现两个List字符串合并并取出不重复的数据。代码示例如下:
```java
List<String> list1 = new ArrayList<>();
list1.add("A");
list1.add("B");
list1.add("C");
List<String> list2 = new ArrayList<>();
list2.add("C");
list2.add("D");
list2.add("E");
List<String> list3 = Stream.concat(list1.stream(), list2.stream())
.distinct()
.collect(Collectors.toList());
```
这里使用了`Stream.concat()`方法将两个List合并成一个Stream流,再使用`distinct()`方法去除重复数据,最后使用`collect()`方法将结果收集到一个新的List集合中。这个新的List集合中就存储了list1和list2中的所有不重复字符串。
相关问题
java两个list字符串合并并将两个list字符串中不重复的数据取出使用stream流
可以使用Java 8的Stream流来实现两个List字符串合并并取出不重复的数据。代码示例如下:
```java
List<String> list1 = new ArrayList<>();
list1.add("A");
list1.add("B");
list1.add("C");
List<String> list2 = new ArrayList<>();
list2.add("C");
list2.add("D");
list2.add("E");
List<String> list3 = Stream.concat(list1.stream(), list2.stream())
.distinct()
.filter(str -> !list1.contains(str) || !list2.contains(str))
.collect(Collectors.toList());
```
这里使用了`Stream.concat()`方法将两个List合并成一个Stream流,再使用`distinct()`方法去除重复数据,最后使用`filter()`方法过滤掉在list1和list2中都存在的字符串,只保留不重复的字符串。最后使用`collect()`方法将结果收集到一个新的List集合中。这个新的List集合中就存储了list1和list2中的所有不重复字符串。
java 如何用stream流处理把list转换成map
在Java中,可以使用Stream API将List转换为Map。假设你有一个List<String>,其中的元素代表键,另一个List<Object>作为值,你可以按照键值对的方式创建Map。这里是一个简单的示例:
```java
import java.util.*;
import java.util.stream.*;
List<String> keys = Arrays.asList("Key1", "Key2", "Key3");
List<Object> values = Arrays.asList("Value1", "Value2", "Value3");
// 创建一个新的HashMap,键和值分别来自两个列表
Map<String, Object> map = keys.stream()
.collect(Collectors.toMap(
key -> key,
value -> values.remove(0), // 注意这里假设value列表长度等于key列表
(oldValue, newValue) -> oldValue // 如果键已经存在,提供默认合并策略
));
System.out.println(map); // 输出:{Key1=Value1, Key2=Value2, Key3=Value3}
```
在这个例子中,`Collectors.toMap()`函数接收三个参数:
1. `Function<String, K>`:键的生成器,这里是直接使用字符串作为键。
2. `Function<Object, V>`:值的提取器,这里是将值列表的第一个元素取出作为对应键的值。
3. `BinaryOperator<V>`:如果键已存在于Map中,则提供合并策略,这里我们简单地保留旧值。
注意,这种方法假定value列表的大小始终与key列表匹配,如果不匹配,需要调整处理策略。另外,如果你不确定是否已经有相同的键,可以考虑使用`Collectors.toMap(..., Function.identity(), ...)`,它会自动忽略重复的键。
阅读全文