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

java8对集合处理的用法汇总(持续更新)

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

java8对集合处理的用法汇总(持续更新)

java8很多用法还是需要多积累,用熟了能大量简化代码。今天记录一下用java8对集合处理的用法,由于一下子想不起来全部用法,因此遇到了相应的场景就过来更新。

1、首先我们新建一个Book类,用来描述书籍的主要信息,get set及构造方法略。

public class Book {

    
    private String bookName;

    
    private String type;

    
    private String author;

    
    private BigDecimal price;
}

2、然后初始化一个集合books,用来做处理

public static void main(String[] args) {

        //初始化集合信息
        List books = new ArrayList();

        Book book1 = new Book("java从入门到放弃","java","大炮",new BigDecimal("100.5"));
        Book book2 = new Book("mysql从删库到跑路","数据库","大忽悠",new BigDecimal("99.9"));
        Book book3 = new Book("Python从熟悉到陌生","Python","猫蛋",new BigDecimal("109.8"));
        Book book4 = new Book("oracle从入门到删库","数据库","狗蛋",new BigDecimal("128.8"));
        Book book5 = new Book("程序员防脱生发指南","养生","二狗子",new BigDecimal("88.8"));

        books.add(book1);
        books.add(book2);
        books.add(book3);
        books.add(book4);
        books.add(book5);
}

 场景一:java8筛选出数据库类并且价格低于100的书籍(filter过滤用法)

// 1、筛选出数据库类且价格低于100的书籍
        List exampleBook1 = books.stream().filter(e->"数据库".equals(e.getType()) &&
                new BigDecimal("100").compareTo(e.getPrice()) > 0).collect(Collectors.toList());

运行结果 

场景二:java8求最大、最小值

// 2、筛选价格最高(低)的书籍
        Book exampleBook2 = books.stream().min(Comparator.comparing(Book::getPrice)).get();
        Book exampleBook3 = books.stream().max(Comparator.comparing(Book::getPrice)).get();

运行结果

场景三:java8按照种类分类并统计每大类总价(单字段分组统计求和)

//写法1
        Map resultMap = books.stream().collect(Collectors.toMap(Book::getType, Book::getPrice, BigDecimal::add));

 运行结果

/写法二
        Map resultMap = books.stream().collect(Collectors.groupingBy(Book::getType,Collectors.mapping(Book::getPrice, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));

 运行结果

 场景四:java8按照书籍种类和作者两个字段分组并统计总价(多字段分组统计求和)

//按照书籍种类和作者两个字段分组并统计总价
        Map resultMap = books.stream().collect(Collectors.groupingBy(e -> e.getType() + "_" + e.getAuthor(), 
                Collectors.mapping(Book::getPrice, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));

运行结果

场景四:java8求所有书籍总价 (求和)

//求所有书籍总价
        BigDecimal totalPrice = books.stream().map(Book::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);

运行结果

场景五:java8根据书籍价格升序、降序排序并取出价格单个字段建立新的集合

//根据书籍价格升序、降序排序
        //升序
        List risePrices = books.stream().sorted(Comparator.comparing(Book::getPrice)).map(Book::getPrice).collect(Collectors.toList());

运行结果 

//降序
        List reversedPrices = books.stream().sorted(Comparator.comparing(Book::getPrice).reversed()).map(Book::getPrice).collect(Collectors.toList());

运行结果  

场景六:排序并取出第一个元素 

//排序并取回指定元素
Book firstBook = books.stream().sorted(Comparator.comparing(Book::getPrice).reversed()).findFirst().get();

运行结果:

场景七:java8根据书籍种类进行去重 

//种类去重
        List distinctBooks = books.stream().map(Book::getType).distinct().collect(Collectors.toList());

运行结果 

未完待续。 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/685536.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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