Java8 Stream 常用用法

美凌格栋栋酱
• 阅读 1288

1.List转Map 在 Java 8 中,使用 Stream API 来处理 List<实体类>,并将实体类中的 rawItemNumber 参数作为键, process 参数作为值。对于相同的 rawItemNumber ,所对应的 process 值通过 “-” 进行拼接。实例如下: // 使用 Stream API 进行处理 Map<String, String> rawItemMap = mesBaseDataList.stream() .collect(Collectors.groupingBy( UBoardKittingData::getRawItemNumber, // 以 rawItemNumber 作为键 Collectors.mapping( UBoardKittingData::getProcess, // 映射为 process Collectors.joining("-") // 使用 "-" 拼接 ) )); 若将上述Map的Value去重在进行拼接需将 Collectors.joining("-") 替换成 Collectors.collectingAndThen( Collectors.toSet(), // 去重 set -> String.join("-", set) // 使用 "-" 拼接 ) 2.List遍历,实体类拼接获取唯一的value **Map<String, List> groupedData = dataList.stream() .collect(Collectors.groupingBy( item -> String.join("-", item.getPROJECT(), item.getMAIN_GTK_NUMBER(), item.getRAW_ITEM_NUMBER()) ));

3.toMap 的合并函数 // 当key冲突时,保留后出现的值 Map<Integer, Person> map = people.stream() .collect(Collectors.toMap( Person::getId, person -> person, (existing, replacement) -> replacement // 使用新值替换 )); 4.获取最近一周的日期,不包含周天 List nameList = Stream.iterate(LocalDate.now(), date -> date.minusDays(1)) .filter(date -> date.getDayOfWeek() != DayOfWeek.SUNDAY) .limit(7) .map(date -> date.getMonthValue() + "/" + date.getDayOfMonth()) .sorted() .collect(Collectors.toList());

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java8 Collector 接口
java8的Stream中的collect方法,用于对流中的数据进行归集操作,collect方法接受的参数是一个Collector,忽略掉静态方法后,Collector接口内容如下:publicinterfaceCollector<T,A,R//用于生成空的累加器实例,这个累加器的类型是ASuppl
Wesley13 Wesley13
3年前
Java 泛型
命名类型参数推荐的命名约定是使用大写的单个字母名称作为类型参数。这与C约定有所不同(参阅附录A:与C模板的比较),并反映了大多数泛型类将具有少量类型参数的假定。对于常见的泛型模式,推荐的名称是:K——键,比如映射的键。V——值,比如List和Set的内容,或者Map中的值。E
Easter79 Easter79
3年前
SpringMVC(五):@RequestMapping下使用@RequestParam绑定请求参数值
在处理方法入参使用@RequestParam可以把请求参数传递给请求方法,@RequestParam包含的属性值:\value:参数名称\required:是否必须,默认为true,表示请求参数中必须包含对应的参数,否则抛出异常。\defaultValue:当请求参数缺少或者有请求参数但值为空时,值采用该设置值。示
Wesley13 Wesley13
3年前
Java8 新特性之流式数据处理
一.流式处理简介在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式处理可以在一行中实现。比如我们希望对一个包含整数的集合中筛选出所有的偶数,并将其封装成为一个新的List返回,那么在java8之前,我们需要通过如下代码实现:List<Inte
Wesley13 Wesley13
3年前
mysql中时间比较的实现
MySql中时间比较的实现unix\_timestamp()unix\_timestamp函数可以接受一个参数,也可以不使用参数。它的返回值是一个无符号的整数。不使用参数,它返回自1970年1月1日0时0分0秒到现在所经过的秒数,如果使用参数,参数的类型为时间类型或者时间类型的字符串表示,则是从1970010100:00:0
Wesley13 Wesley13
3年前
Java 8新特性之Stream 概念
Java8中有两大最为重要的改变。第一个是Lambda表达式;另外一个则是StreamAPI(java.util.stream.\)。Stream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用StreamAPI对集合数据进行操作,就类似于使用SQL执行
Wesley13 Wesley13
3年前
Java8 新特性之集合操作Stream
Java8新特性之集合操作StreamStream简介Java8引入了全新的StreamAPI。这里的Stream和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同。stream是对集合对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作,或者大批量数据操作。
Wesley13 Wesley13
3年前
Java8新特性学习
1简述公司自年初终于开始使用java8作为项目的标准jdk,在开发过程中,逐渐认识到java8的很多新特性,确实很方便.其中内容的核心,在于函数式编程,即将函数本身作为对象参数去处理.其中涉及到三个关键新特性:1.lambda表达式(及函数式接口)2.stream3.方法引用这三个新特性的使用是相辅相
Stella981 Stella981
3年前
26 函数形参值回传问题——C++解决多个return的一般方法
0引言在使用数组和vector作为函数的参数进行参数传递并希望得到值的回传时,由于不知道怎么写数组函数形参的引用形式,一直采用vector的引用形式。但是,刚刚测试了一下,发现数组作为参数本身就是指针,根本不需要采用引用形式把值回传啊,把测试结果写下来。1 关于数组作为函数参数的值传递问题——数组和容器的对比  数组直接作为
Wesley13 Wesley13
3年前
Java 8 Stream原理解析
说起Java8,我们知道Java8大改动之一就是增加函数式编程,而StreamAPI便是函数编程的主角,StreamAPI是一种流式的处理数据风格,也就是将要处理的数据当作流,在管道中进行传输,并在管道中的每个节点对数据进行处理,如过滤、排序、转换等。首先我们先看一个使用StreamAPI的示例,具体代码如下: !(htt