java8 stream.map 忽略空值
时间: 2023-11-17 13:57:33 浏览: 183
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中。
相关问题
java8 stream流时空值排序
要对Stream中的元素进行排序,可以使用sorted方法,它有两个重载版本:
1. sorted():根据元素的自然顺序进行排序;
2. sorted(Comparator<? super T> comparator):使用指定的比较器进行排序。
如果Stream中的元素可能为空,需要先过滤掉空值再进行排序。可以使用filter方法过滤掉空值,然后再使用sorted方法进行排序。
下面是一个示例代码,演示了如何对Stream中的元素进行排序(包括空值):
```java
import java.util.Arrays;
import java.util.Comparator;
public class StreamSortDemo {
public static void main(String[] args) {
String[] arr = {"apple", null, "banana", "orange", null, "pear"};
Arrays.stream(arr)
.filter(s -> s != null)
.sorted(Comparator.naturalOrder())
.forEach(System.out::println);
}
}
```
输出结果为:
```
apple
banana
orange
pear
```
在这个示例中,首先使用Arrays.stream方法将数组转换为Stream。然后使用filter方法过滤掉空值,最后使用sorted方法按照自然顺序进行排序。由于自然顺序是升序排序,所以输出结果也是升序排列的。
resultType="java.util.Map"
回答: 当设置resultType为"java.util.Map"时,查询结果会以Map的形式返回。然而,需要注意的是,如果查询出来的字段值为空(包括别名),MyBatis不会将其映射到Map对象中,也就是说Map对象不会包含值为null的属性。为了解决这个问题,你可以使用Mysql中的ifnull函数或者Oracle中的nvl函数来处理空值。使用resultType为"java.util.Map"的方法有几个优势:首先,你可以在多表关联中不需要配置对应的关系,直接编写SQL语句;其次,你可以直接获取返回的属性值,避免了大量返回值为null的情况;还可以减少实体类的创建,不需要创建DO、VO、DTO等实体类;最后,在关联对象时,返回值无需进行去空或重新封装数据的操作。
#### 引用[.reference_title]
- *1* [resultType=java.util.Map的存储原理](https://blog.csdn.net/weixin_73757147/article/details/130732670)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [Mybatis---定义ResultType="java.util.Map"问题](https://blog.csdn.net/lei_1994/article/details/80559357)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]