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

在java8中针对List集合的操作

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

在java8中针对List集合的操作

List集合是某个实体
//我先给出实体。优惠券的
import lombok.Data;

@Data
public class Coupon {
    private Integer couponId;
    private Integer price;
    private String name;
}
先把对象数据丢进去
public class CouponListTest {
    public static void main(String[] args) {
        List couponList = new ArrayList<>();
        //使用for循环重复设置数据
        for (int i =0;i<4;i++){
            Coupon coupon = new Coupon();
            coupon.setCouponId(i);
            coupon.setName("优惠券"+i);
            coupon.setPrice(i*100);
            couponList.add(coupon);
        }
        //之所以重新插入一个重复数据是因为后面要合并重复数据
        Coupon coupon1 = new Coupon();
        coupon1.setCouponId(1);
        coupon1.setName("优惠券"+1);
        coupon1.setPrice(1*100);
        couponList.add(coupon1);
分组
Map> group = couponList.stream().collect(Collectors.groupingBy(Coupon::getCouponId));
System.out.println("分组:"+group);

//已经转换为map集合了,CouponId为key
输出结果:
分组:{0=[Coupon(couponId=0, price=0, name=优惠券0)], 1=[Coupon(couponId=1, price=100, name=优惠券1), Coupon(couponId=1, price=100, name=优惠券1)], 2=[Coupon(couponId=2, price=200, name=优惠券2)], 3=[Coupon(couponId=3, price=300, name=优惠券3)]}
把list的集合里面的多条记录按照指定符号分割
String separate = couponList.stream().map(String::valueOf).collect(Collectors.joining("板鸭"));
System.out.println("分隔:"+separate);

//已经转换为map集合了,按照板鸭字符串分隔
输出结果:
分隔:Coupon(couponId=1, price=100, name=优惠券1)板鸭Coupon(couponId=0, price=0, name=优惠券0)板鸭Coupon(couponId=1, price=100, name=优惠券1)板鸭Coupon(couponId=2, price=200, name=优惠券2)板鸭Coupon(couponId=3, price=300, name=优惠券3)
过滤
List filterList = couponList.stream().filter(coupon -> coupon.getPrice()<200).collect(Collectors.toList());
System.out.println("过滤:"+filterList);

//这里的过滤条件,我设置的是金额要小于200
输出结果:
过滤:[Coupon(couponId=1, price=100, name=优惠券1), Coupon(couponId=0, price=0, name=优惠券0), Coupon(couponId=1, price=100, name=优惠券1)]
过滤转map
Map filterMap = couponList.stream().filter(coupon -> coupon.getPrice()>100).collect(Collectors.toMap(Coupon::getName,Coupon::getPrice));
System.out.println("过滤转map:"+filterMap);

输出结果:
过滤转map:{优惠券3=300, 优惠券2=200}
实现list中对象属性的合并(去重并求和)
 List list = couponList.stream().collect(Collectors.toMap(Coupon::getCouponId,coupon -> coupon,(o1,o2)->{
    o1.setName(o1.getName()+o2.getName());
    o1.setPrice(o1.getPrice()+o2.getPrice());
    return o1;
})).values().stream().collect(Collectors.toList());
System.out.println("合并重复数据:"+list);

输出结果:
合并重复数据:[Coupon(couponId=0, price=0, name=优惠券0), Coupon(couponId=1, price=200, name=优惠券1优惠券1), Coupon(couponId=2, price=200, name=优惠券2), Coupon(couponId=3, price=300, name=优惠券3)]
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/731981.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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