栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java List列表的stream()接口一些常用方法汇总

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java List列表的stream()接口一些常用方法汇总

文章目录
  • 前言
  • 一、非对象列表去重
    • 1.使用方法
  • 二、对象列表去重
    • 1.通过stream的filter()方法
    • 2.stream流的衍生功能
      • 2.1.单个字段或条件
      • 2.2.多个字段或条件
  • 三、anyMatch()列表里是否包含某个元素
  • 四、allMatch()列表里元素都是某个值
  • 五、noneMatch()列表里元素都不是某个值
  • 总结


前言

以下是日常开发中用到的比较多的一些方法,整理在一起方便查阅


一、非对象列表去重 1.使用方法
List changeList = list.stream().distinct().collect(Collectors.toList());	//list原列表

注意:distinct()是基于hashcode()和equals()工作的,故不支持对对象的列表进行去重

二、对象列表去重 1.通过stream的filter()方法
public static  Predicate distinctByKey(Function keyExtractor) {
        Map seen = new ConcurrentHashMap<>();
        return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
List lists = list.stream().filter(distinctByKey(b->b.getXXX())).collect(Collectors.toList());	//Entity用到的对象
2.stream流的衍生功能 2.1.单个字段或条件
ArrayList collect = list.stream().collect(Collectors.collectingAndThen(
                        Collectors.toCollection(() -> new TreeSet<>(
                                Comparator.comparing(
                                        Entity::getXXX))), ArrayList::new));	//getXXX进行比较的对象属性
2.2.多个字段或条件
ArrayList collect1 = entityList.stream().collect(Collectors.collectingAndThen(
                Collectors.toCollection(() -> new TreeSet<>(
                        Comparator.comparing(p->p.getXXXA() + ";" + p.getXXXB()))), ArrayList::new);
三、anyMatch()列表里是否包含某个元素
List list = Arrays.asList(1, 2, 1, 1, 1);
boolean flag = list.stream().anyMatch(f -> f == (1)); 	//返回true
boolean flag2 = list.stream().anyMatch(a -> StrUtil.isNotBlank(a) && a.equals("1"));	//多条件
四、allMatch()列表里元素都是某个值
List list = Arrays.asList(1, 2, 1, 1, 1);
boolean flag = list.stream().allMatch(f -> f == (1)); 	//返回false
boolean flag2 = list.stream().allMatch(a -> StrUtil.isNotBlank(a) && a.equals("1"));	//多条件
五、noneMatch()列表里元素都不是某个值
List list = Arrays.asList(1, 2, 1, 1, 1);
boolean flag = list.stream().noneMatch(f -> f == (1)); 	//返回false
boolean flag2 = list.stream().noneMatch(a -> StrUtil.isNotBlank(a) && a.equals("1"));	//多条件
总结

以上就是一些常用的方法汇总。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/329116.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号