Java8 Stream 常用用法

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<UBoardKittingData>> 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<String> 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());

点赞
收藏

评论区

加载中...

相关推荐

java8 Collector 接口

java8的Stream中的collect方法,用于对流中的数据进行归集操作,collect方法接受的参数是一个Collector,忽略掉静态方法后,Collector接口内容如下:publicinterfaceCollector<T,A,R//用于生成空的累加器实例,这个累加器的类型是ASuppl

Java 泛型

命名类型参数推荐的命名约定是使用大写的单个字母名称作为类型参数。这与C约定有所不同(参阅附录A:与C模板的比较),并反映了大多数泛型类将具有少量类型参数的假定。对于常见的泛型模式,推荐的名称是:K——键,比如映射的键。V——值,比如List和Set的内容,或者Map中的值。E

SpringMVC(五):@RequestMapping下使用@RequestParam绑定请求参数值

在处理方法入参使用@RequestParam可以把请求参数传递给请求方法,@RequestParam包含的属性值:\value:参数名称\required:是否必须,默认为true,表示请求参数中必须包含对应的参数,否则抛出异常。\defaultValue:当请求参数缺少或者有请求参数但值为空时,值采用该设置值。示

Java8 新特性之流式数据处理

一.流式处理简介在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式处理可以在一行中实现。比如我们希望对一个包含整数的集合中筛选出所有的偶数,并将其封装成为一个新的List返回,那么在java8之前,我们需要通过如下代码实现:List<Inte

mysql中时间比较的实现

MySql中时间比较的实现unix\_timestamp()unix\_timestamp函数可以接受一个参数,也可以不使用参数。它的返回值是一个无符号的整数。不使用参数,它返回自1970年1月1日0时0分0秒到现在所经过的秒数,如果使用参数,参数的类型为时间类型或者时间类型的字符串表示,则是从1970010100:00:0

Java 8新特性之Stream 概念

Java8中有两大最为重要的改变。第一个是Lambda表达式;另外一个则是StreamAPI(java.util.stream.\)。Stream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用StreamAPI对集合数据进行操作,就类似于使用SQL执行