使用java8 新特性stream流对List<Map<String, Object>>集合进行遍历、过滤、查询、去重、排序、分组

对于一个List<Map<String, Object>>类型的数据,可以使用Java 8的新特性stream流来进行遍历、过滤、查询、去重、排序、分组等操作。

遍历:

List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();

//添加数据
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("id", 1);
map1.put("name", "张三");
dataList.add(map1);

Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("id", 2);
map2.put("name", "李四");
dataList.add(map2);

//使用stream流进行遍历
dataList.stream().forEach(map -> {
    System.out.println("id:" + map.get("id") + ",name:" + map.get("name"));
});

过滤:

List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();

//添加数据
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("id", 1);
map1.put("name", "张三");
map1.put("age", 20);
dataList.add(map1);

Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("id", 2);
map2.put("name", "李四");
map2.put("age", 30);
dataList.add(map2);

//使用stream流进行过滤
dataList.stream().filter(map -> (Integer) map.get("age") > 25).forEach(map -> {
    System.out.println("id:" + map.get("id") + ",name:" + map.get("name"));
});

查询:

List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();

//添加数据
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("id", 1);
map1.put("name", "张三");
map1.put("age", 20);
dataList.add(map1);

Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("id", 2);
map2.put("name", "李四");
map2.put("age", 30);
dataList.add(map2);

//使用stream流进行查询
Optional<Map<String, Object>> optionalMap = dataList.stream().filter(map -> (Integer) map.get("id") == 1).findFirst();
if (optionalMap.isPresent()) {
    Map<String, Object> map = optionalMap.get();
    System.out.println("id:" + map.get("id") + ",name:" + map.get("name") + ",age:" + map.get("age"));
}

去重:

List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();

//添加数据
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("id", 1);
map1.put("name", "张三");
map1.put("age", 20);
dataList.add(map1);

Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("id", 2);
map2.put("name", "李四");
map2.put("age", 30);
dataList.add(map2);

Map<String, Object> map3 = new HashMap<String, Object>();
map3.put("id", 2);
map3.put("name", "李四");
map3.put("age", 30);
dataList.add(map3);

//使用stream流进行去重
List<Map<String, Object>> distinctList = dataList.stream().distinct().collect(Collectors.toList());
distinctList.stream().forEach(map -> {
    System.out.println("id:" + map.get("id") + ",name:" + map.get("name") + ",age:" + map.get("age"));
});

排序:

List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();

//添加数据
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("id", 1);
map1.put("name", "张三");
map1.put("age", 20);
dataList.add(map1);

Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("id", 2);
map2.put("name", "李四");
map2.put("age", 30);
dataList.add(map2);

Map<String, Object> map3 = new HashMap<String, Object>();
map3.put("id", 3);
map3.put("name", "王五");
map3.put("age", 25);
dataList.add(map3);

//使用stream流进行排序
List<Map<String, Object>> sortedList = dataList.stream().sorted((map1, map2) -> (Integer) map1.get("age") - (Integer) map2.get("age")).collect(Collectors.toList());
sortedList.stream().forEach(map -> {
    System.out.println("id:" + map.get("id") + ",name:" + map.get("name") + ",age:" + map.get("age"));
});

分组:

List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();

//添加数据
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("id", 1);
map1.put("name", "张三");
map1.put("age", 20);
dataList.add(map1);

Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("id", 2);
map2.put("name", "李四");
map2.put("age", 30);
dataList.add(map2);

Map<String, Object> map3 = new HashMap<String, Object>();
map3.put("id", 3);
map3.put("name", "王五");
map3.put("age", 25);
dataList.add(map3);

//使用stream流进行分组
Map<Integer, List<Map<String, Object>>> groupMap = dataList.stream().collect(Collectors.groupingBy(map -> (Integer) map.get("age")));
for (Map.Entry<Integer, List<Map<String, Object>>> entry : groupMap.entrySet()) {
    Integer age = entry.getKey();
    List<Map<String, Object>> list = entry.getValue();
    System.out.println("年龄为" + age + "的人数为" + list.size());
}

  • 11
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用Java 8的Stream API来根据属性code去重遍历List<Map<String, String>> wareList。首先,使用filter方法根据code属性进行过滤,只保留code属性不重复的元素。然后,使用forEach方法遍历过滤后的结果。以下是一个示例代码: ``` wareList.stream() .filter(distinctByKey(map -> map.get("code"))) .forEach(map -> { // 在这里进行遍历操作 }); ``` 请注意,上述代码中的distinctByKey方法是一个自定义方法,用于根据指定属性的值进行去重。以下是一个可能的实现: ``` public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) { Set<Object> seen = ConcurrentHashMap.newKeySet(); return t -> seen.add(keyExtractor.apply(t)); } ``` 这样,您就可以根据属性code去重遍历List<Map<String, String>> wareList了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [对 ListMapString, Object 格式的数据](https://blog.csdn.net/weixin_44979389/article/details/127621293)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [ListMapString, ObjectMapString,ListMapString, Object多方式循环遍历](https://blog.csdn.net/qq_42055933/article/details/127914726)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值