java中stream流filter过滤后为空不做处理,不为空则继续处理的代码案例
时间: 2024-02-25 12:57:24 浏览: 22
以下是一个示例代码,演示如何使用Java Stream流进行过滤处理:
```
List<String> list = Arrays.asList("apple", "banana", "", "orange", "");
list.stream()
.filter(str -> !str.isEmpty()) // 过滤掉空字符串
.map(str -> str.toUpperCase()) // 将剩余字符串转换为大写形式
.forEach(System.out::println); // 输出处理结果
```
在上述代码中,我们首先使用`Arrays.asList`方法创建了一个包含多个字符串的列表。接着,我们使用`stream`方法将该列表转换为一个流对象。通过`filter`方法,我们可以过滤掉空字符串,即只处理非空字符串。在这里,我们使用`!str.isEmpty()`的方式判断字符串是否为空。
在过滤掉空字符串后,我们使用`map`方法将剩余字符串转换为大写形式。最后,我们通过`forEach`方法将处理结果输出到控制台上。
需要注意的是,如果列表中所有的字符串都是空字符串,那么经过`filter`过滤后,结果流将为空流。在这种情况下,`map`方法和`forEach`方法都不会执行任何操作。
相关问题
java中stream流filter过滤后为null不做处理,不为空则继续处理的代码案例
在Java中,`null`和空字符串是两个不同的概念。如果你想要在Stream流中过滤掉`null`值,可以使用`Objects::nonNull`方法来判断元素是否为`null`。
以下是一个示例代码,演示如何使用Java Stream流进行过滤处理:
```
List<String> list = Arrays.asList("apple", "banana", null, "orange", null);
list.stream()
.filter(Objects::nonNull) // 过滤掉null元素
.map(str -> str.toUpperCase()) // 将剩余字符串转换为大写形式
.forEach(System.out::println); // 输出处理结果
```
在上述代码中,我们首先使用`Arrays.asList`方法创建了一个包含多个字符串的列表,其中包括`null`值。接着,我们使用`stream`方法将该列表转换为一个流对象。通过`filter`方法,我们可以过滤掉`null`值,即只处理非`null`值。在这里,我们使用`Objects::nonNull`方法来判断元素是否为`null`。
在过滤掉`null`值后,我们使用`map`方法将剩余字符串转换为大写形式。最后,我们通过`forEach`方法将处理结果输出到控制台上。
需要注意的是,如果列表中所有的元素都是`null`,那么经过`filter`过滤后,结果流将为空流。在这种情况下,`map`方法和`forEach`方法都不会执行任何操作。
java四个string对象不为空进行返回最少代码案例
可以使用Java 8中的Optional类来实现最少代码的方案,如下所示:
```java
public static String getFirstNonNull(String s1, String s2, String s3, String s4) {
return Stream.of(s1, s2, s3, s4)
.filter(Objects::nonNull)
.findFirst()
.orElse("");
}
```
该方法接收4个字符串参数,并通过Stream.of将它们转换为流。然后使用filter方法过滤掉null值的字符串,并使用findFirst方法返回第一个非空字符串。如果所有字符串都是null,则返回空字符串。