java8从list集合stream()常用操作

本文介绍如何使用Java Stream API对集合进行高效处理,包括提取特定字段、去重并获取单条记录及排序等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        List<Order> list = new ArrayList<User>();
        Order o1 = new Order("1","MCS-2019-1123");
        list.add(o1 );
        Order o2= new Order("2","MCS-2019-1124");
        list.add(o2);
        Order o3= new Order("3","MCS-2019-1125");
        list.add(o3);
        List<String> orderNoList=list.stream().map(Order::getOrderNo).collect(Collectors.toList());
        System.out.println("输出单号集合:"+orderNoList);
        List<String> idList=list.stream().map(Order::getId()).collect(Collectors.toList());
        System.out.println(idList)

//如果只需要返回2个或者多个属性
list.stream().collect(Collectors.toMap(Order::getId, Order::getOrderNo)); 返回map

结果

输出第一个:["MCS-2019-1123", "MCS-2019-1124", "MCS-2019-1125"]
[1, 2, 3]

order类:

public class Order{
     String id;
     String orderNo;
     
     public Order(String id, String orderNo) {
        this.id = id;
        this.orderNo= orderNo;
    }
    public String getId() {
        return id;
    }
    public void setId(String order) {
        this.id= id;
    }
    public String getOrderNo() {
        return orderNo;
    }
    public void setOrderNo(String message) {
        this.orderNo= orderNo;
    }
    
}

根据有重复记录的某字段返回一条数据

Map<String, ProductPurchasePriceErpVO> deduplicationMap = validQuoteSkuNumNewList.stream().collect(Collectors.groupingBy(ProductPurchasePriceErpVO::getProductCode , Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));

List<ProductPurchasePriceErpVO> list = Lists.newArrayList();

deduplicationMap .forEach((key, value) -> {
     list.add(value);
});

对list集合某字段进行排序 

List<类> list; 代表某集合
 
//返回 对象集合以类属性一升序排序
 
list.stream().sorted(Comparator.comparing(类::属性一));
 
//返回 对象集合以类属性一降序排序 注意两种写法
 
list.stream().sorted(Comparator.comparing(类::属性一).reversed());//先以属性一升序,结果进行属性一降序
 
list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()));//以属性一降序
 
//返回 对象集合以类属性一升序 属性二升序
 
list.stream().sorted(Comparator.comparing(类::属性一).thenComparing(类::属性二));
 
//返回 对象集合以类属性一降序 属性二升序 注意两种写法
 
list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二));//先以属性一升序,升序结果进行属性一降序,再进行属性二升序
 
list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()).thenComparing(类::属性二));//先以属性一降序,再进行属性二升序
 
//返回 对象集合以类属性一降序 属性二降序 注意两种写法
 
list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二,Comparator.reverseOrder()));//先以属性一升序,升序结果进行属性一降序,再进行属性二降序
 
list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()).thenComparing(类::属性二,Comparator.reverseOrder()));//先以属性一降序,再进行属性二降序
 
//返回 对象集合以类属性一升序 属性二降序 注意两种写法
 
list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二).reversed());//先以属性一升序,升序结果进行属性一降序,再进行属性二升序,结果进行属性一降序属性二降序
 
list.stream().sorted(Comparator.comparing(类::属性一).thenComparing(类::属性二,Comparator.reverseOrder()));//先以属性一升序,再进行属性二降序<br><br><br>

集合分页:

获取第pageNum页数据
private List<?> partition(ArrayList<?> list, int pageSize, int pageNum) {
    // 将 List 按照 PageSzie 拆分成多个List
    List<? extends List<?>> partition = Lists.partition(list, pageSize);
    // 总页数
    int pages = partition.size();
    pageNum = pageNum <= 0 ? 0 : (pageNum <= (pages - 1) ? pageNum-1 : (pages - 1));
    return partition.get(pageNum);
}


评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值