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

这篇具有很好参考价值的文章主要介绍了使用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"));
});

分组:文章来源地址https://www.toymoban.com/news/detail-688573.html

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());
}

到了这里,关于使用java8 新特性stream流对List<Map<String, Object>>集合进行遍历、过滤、查询、去重、排序、分组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • JAVA8新特性stream流收集为Map,value为null导致空指针的问题

    JAVA8新特性stream流收集为Map,value为null导致空指针的问题

    jdk8 新特性stream深受喜爱,平时使用比较多,其中有: MapString, String collect2 =  list.stream().collect(Collectors.toMap(Book::getName, Book::getIdNO,(pre, after) - pre));  现象如下: 问题:JDK8环境下,如果Book::getIdNo 为null的话会报空指针,即JDK8环境下的,该接口不支持value为null(key为null没这个问

    2024年02月06日
    浏览(46)
  • JSON转换List<Map<String, Object>>、Map<String, Object>

    废话就不说了 早上10点研究到现在 获取redis的JSON字符串 String getPalletListNew = redisService.getRedis(“getPalletListNew”, abroad + “” + goodsLevel + “” + startPort + “” + destinationPort + “” + maxTon + “” + minTon); 转换MapString,Object public MapString, Object jsonToMap(String json){ MapString, Object map = new

    2024年02月20日
    浏览(11)
  • Java8使用Stream流实现List列表简单使用

    Java8使用Stream流实现List列表简单使用

       目录 1.forEach() 2.filter(T - boolean) 3.findAny()和findFirst() 4.map(T - R) 和flatMap(T - stream) 5.distinct() 去重 6.limit(long n)和skip(long n)  7.anyMatch(T - boolean) 8.allMatch(T - boolean) 9.noneMatch(T - boolean) Java8提供了Stream(流)处理集合的关键抽象概念,Stream 使用一种类似用 SQL 语句从数据库查询数

    2023年04月27日
    浏览(9)
  • JAVA8中list.stream()的一些简单使用

    为函数式编程而生。对stream的任何修改都不会修改背后的数据源,比如对stream执行过滤操作并不会删除被过滤的元素,而是会产生一个不包含被过滤元素的新stream。 stream上的操作并不会立即执行,只有等到用户真正需要结果的时候才会执行。 stream只能被使用一次,一旦遍历

    2024年02月03日
    浏览(14)
  • Java8-使用stream.sorted()对List排序

    1.流的定义 Stream 中文称为 “流”,通过将集合转换为这么一种叫做 “流” 的元素序列,通过声明性方式,能够对集合中的每个元素进行一系列并行或串行的操作! 如果流中的元素的类实现了 Comparable 接口,即有自己的排序规则,那么可以直接调用 sorted() 方法对元素进行排

    2024年02月16日
    浏览(49)
  • 使用Lambda表达式对List<Map<String,Object>>中key值相同的Map进行分组合并

    使用Lambda表达式对List<Map<String,Object>>中key值相同的Map进行分组合并

    现有两张表A表和B表,A表存放的是各省市的认证次数,B表存放的是各省市的申领次数,重点关注dq,cs这两个字段,其他的字段可忽略                                                      A表(省市认证次数表)                                                 B表

    2024年02月13日
    浏览(46)
  • List<Map<String, Object>>

    ListMapString, Object 是一个Java数据结构,它是一个列表(List),其中每个元素都是一个Map。在每个Map中,键(key)是字符串(String),值(value)可以是任何对象(Object)。 这种数据结构通常用于存储和处理一组相关的数据记录。例如,可以使用ListMapString, Object 存储数据库查询结果,其

    2023年04月21日
    浏览(12)
  • <List<Map<String,Object>>>Map中多个属性转成List Map

    举例: 原始数据 :{001=张三, 002=李四, 003=王五, 004=赵六} 目标数据 : {value=张三, key=001} {value=李四, key=002} {value=王五, key=003} {value=赵六, key=004} 输出: 单独封装工具类案例:

    2024年02月11日
    浏览(29)
  • List<Map<String, Object>> 转List<T> list map对象转list对象

    List<Map<String, Object>> 转List<T> list map对象转list对象

    我们在处理数据的时候,经常用到map对象转java对象。 要转换的对象 pom文件JSON包 : 如果此篇文章有帮助到您, 希望打大佬们能 关注 、 点赞 、 收藏 、 评论 支持一波,非常感谢大家! 如果有不对的地方请指正!!! 参考1 参考2

    2024年02月13日
    浏览(14)
  • java8新特性Stream流中anyMatch和allMatch和noneMatch的使用!!!

    判断数据列表中是否存在任意一个元素符合设置的predicate条件,如果是就返回true,否则返回false。 接口定义: boolean anyMatch(Predicate? super T predicate); 方法描述: 在anyMatch 接口定义中是接收 Predicate 类型参数,在Lamdba表达式中 PredicateT 是接收一个T类型参数,然后经过逻辑验证返

    2024年02月08日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包