map<Integer,String> 使用stream 取map所有不为空的value返回list
时间: 2024-02-22 11:56:37 浏览: 51
可以使用Java 8提供的Stream API来优雅地实现该功能。以下是代码示例:
```java
Map<Integer,String> map = new HashMap<>();
// 假设已经将map中的键值对添加完毕
List<String> list = map.values().stream()
.filter(value -> value != null && !value.isEmpty())
.collect(Collectors.toList());
// list中就是所有不为空的value
```
首先,我们使用`map.values()`获取Map中所有的value,并通过`stream()`方法将其转换为Stream。然后,使用`filter()`方法过滤出不为空的value,并最终使用`collect()`方法将其收集到List中。最后,List中就是所有不为空的value。
相关问题
Map<Integer, List<SalePromotionForm>>转Map<Integer, List<String>>
您可以使用Java 8的Stream API和Collectors工具类来将Map<Integer, List<SalePromotionForm>>转换为Map<Integer, List<String>>。您可以按照以下步骤进行操作:
1. 导入所需的类:
```java
import java.util.Map;
import java.util.List;
import java.util.stream.Collectors;
```
2. 创建一个示例的Map<Integer, List<SalePromotionForm>>:
```java
Map<Integer, List<SalePromotionForm>> salePromotionMap = new HashMap<>();
// 假设salePromotionMap已经被填充了数据
```
3. 使用Stream API和Collectors.toMap()方法进行转换:
```java
Map<Integer, List<String>> result = salePromotionMap.entrySet().stream()
.collect(Collectors.toMap(
Map.Entry::getKey, // 键保持不变
entry -> entry.getValue().stream()
.map(SalePromotionForm::toString) // 将SalePromotionForm对象转换为String
.collect(Collectors.toList()) // 将List<String>收集起来
));
```
这样,您就可以将Map<Integer, List<SalePromotionForm>>转换为Map<Integer, List<String>>,其中SalePromotionForm对象被转换为String对象。
如何使用Java 8的流来操作List<Map<String, List<Integer>>>类型的数据?
要使用Java 8的流来操作List<Map<String, List<Integer>>>类型的数据,你可以按照以下步骤进行操作:
1. 使用流的`flatMap`方法将List中的每个Map对象转换为流。
2. 使用流的`flatMap`方法将Map中的每个List对象转换为流。
3. 使用流的`forEach`方法或其他终端操作对每个整数进行处理。
下面是示例代码:
```java
List<Map<String, List<Integer>>> data = new ArrayList<>();
// 假设data已经被填充了数据
data.stream()
.flatMap(map -> map.values().stream())
.flatMap(List::stream)
.forEach(System.out::println);
```
这个示例代码将遍历List中的每个Map对象,然后将每个Map对象中的List对象转换为流,并最终将每个整数打印出来。
阅读全文