JAVA JDK8 List分组获取第一个元素的方法
2018-12-09 20:04
781 查看
概述
在JAVA JDK8 List分组的实现和用法一文中介绍了JDK 8
如何对list
进行分组,但是没有提到如何在分组后,获取每个分组的第一个元素。其实这个也很简单,代码如下:
package test; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class ListGroupFindFirstTest3 { public static void main(String[] args) { List<Coupon> couponList = new ArrayList<>(); Coupon coupon1 = new Coupon(1,100,"优惠券1"); Coupon coupon2 = new Coupon(2,200,"优惠券2"); Coupon coupon3 = new Coupon(3,300,"优惠券3"); Coupon coupon4 = new Coupon(3,400,"优惠券4"); couponList.add(coupon1); couponList.add(coupon2); couponList.add(coupon3); couponList.add(coupon4); Map<Integer, Coupon> resultList = couponList.stream().collect(Collectors.groupingBy(Coupon::getCouponId,Collectors.collectingAndThen(Collectors.toList(),value->value.get(0)))); System.out.println(JSON.toJSONString(resultList, SerializerFeature.PrettyFormat)); } }
package test; public class Coupon { private Integer couponId; private Integer price; private String name; public Coupon(Integer couponId, Integer price, String name) { this.couponId = couponId; this.price = price; this.name = name; } public Integer getCouponId() { return couponId; } public void setCouponId(Integer couponId) { this.couponId = couponId; } public Integer getPrice() { return price; } public void setPrice(Integer price) { this.price = price; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
需要借助Collectors.collectingAndThen
方法,对组内的元素进行处理,这里是获取第一个元素。
代码输出结果如下:
{ 1:{
"couponId":1,
"name":"优惠券1",
"price":100
},
2:{
"couponId":2,
"name":"优惠券2",
"price":200
},
3:{
"couponId":3,
"name":"优惠券3",
"price":300
}
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接
您可能感兴趣的文章:
- JAVA JDK8 List分组的实现和用法
- Java基于JDK 1.8的LinkedList源码详析
- JAVA环境搭建之MyEclipse10+jdk1.8+tomcat8环境搭建详解
- java使用lambda表达式对List集合进行操作技巧(JDK1.8)
- Java新手环境搭建 JDK8安装配置教程
- Java修改maven的默认jdk版本为1.7的方法
- 批处理一键安装JDK/一键安装JRE和自动配置Java环境变量
- 基于JDK8总结java中的interrupt
- JDK1.7以上javaFTP上传删除文件的实现方法
- JDK1.7 之java.nio.file.Files 读取文件仅需一行代码实现
- JAVA JDK8 List获取属性列表
相关文章推荐
- [原创]Java中使用File类的list方法获取一定数量的文件:FilenameFilter接口的特殊用法
- Java中集合List按照集合内实体类元素的指定字段排序方法
- scala调用java的方法,返回了一个对象链表List<Student>,在scala中遍历该链表获取指定Student的名字name
- java中循环删除list中元素的方法总结
- Java中对list元素进行排序的方法详解
- Java学习笔记(七)——获取类中方法的信息,java的LinkedList
- JAVA中循环删除list中元素的方法总结
- Java 用Collections.addAll()方法给Stack和LinkedList添加元素,结果不同
- Java编程:删除 List 元素的三种正确方法
- JAVA中循环删除list中元素的方法总结
- JAVA 集合 List 分组的两种方法
- java 集合(List)元素分组
- JAVA中循环删除list中元素的方法总结
- java中获取map集合数组的元素的方法
- java(jdk1.4、jdk1.6)获取mac地址的方法(winxp、win2003、win7、linux)
- JAVA 集合 List 分组的两种方法
- Java集合之List遍历找到匹配元素删除方法总结
- Java Map -entryset 另一种获取Map中全部元素的方法
- java中循环遍历删除List和Set集合中元素的方法
- java中循环遍历删除List和Set集合中元素的方法