stream().map去空值
时间: 2024-08-29 18:02:09 浏览: 157
Stream API在Java中是一个强大的工具,用于处理集合数据。`stream().map()`方法主要用于对流中的每个元素应用某个函数并创建一个新的流。当流中可能存在null值时,我们可以使用`Optional<T>`来处理这种情况。
如果你想过滤掉空值(null),可以先将元素转化为`Optional`,然后再进行映射操作。这通常通过`map(Objects::requireNonNull)`或`filter(Objects::nonNull)`这两个方法结合实现。例如:
```java
List<String> list = Arrays.asList(null, "a", null, "b");
List<String> nonNullStrings = list.stream()
.map(Optional::ofNullable) // 将null转换为Optional.empty()
.filter(Optional::isPresent) // 筛选出非空的Optional
.map(Optional::get) // 取出实际的非null值
.collect(Collectors.toList());
```
在这个例子中,原始列表`list`中有两个null值,经过上述处理后,`nonNullStrings`列表只包含非空字符串"a"和"b"。
相关问题
java8 stream.map 忽略空值
Java 8中的Stream API提供了一种简单的方法来处理集合中的元素。如果你想忽略Map中的空值,可以使用filter()方法来过滤掉空值。例如,你可以使用以下代码来过滤掉Map中的空值:
Map<String, String> map = new HashMap<>();
map.put("y", "abc");
map.put("z", "abv");
map.put("zz", null);
map.put("yy", "");
Map<String, String> filteredMap = map.entrySet()
.stream()
.filter(entry -> entry.getValue() != null && !entry.getValue().isEmpty())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
在上面的代码中,我们使用了filter()方法来过滤掉Map中的空值。我们首先使用entrySet()方法获取Map中的所有键值对,然后使用stream()方法将其转换为Stream对象。接着,我们使用filter()方法来过滤掉值为null或空字符串的键值对。最后,我们使用collect()方法将过滤后的键值对收集到一个新的Map中。
stream().map去除null
如果你想要去除 Stream 中的空值(null),可以使用 `filter` 方法来进行过滤。下面是一个示例代码:
```java
List<String> list = Arrays.asList("A", null, "B", null, "C");
List<String> result = list.stream()
.filter(Objects::nonNull)
.collect(Collectors.toList());
System.out.println(result); // 输出: [A, B, C]
```
在上述代码中,我们使用 `filter` 方法将空值过滤掉,保留非空的元素。最后,我们使用 `collect` 方法将结果收集到一个新的列表中。这样就可以得到一个不包含空值的新列表。
阅读全文