Java 8 API

本篇文章介绍 Java 8 API 中常用方法

文章中如有不清楚的,或者是没有你需要实现的代码实例,欢迎进行留言!

/**
 * 基础数据示例
 */
public class T {

    /**
     * 城市实体类
     */
    @Data
    @Builder
    public static class City {
        private Long id;
        private String name; // 城市名称
        private Integer count; // 城市人数
    }

    public static void main(String[] args) {
    
        List<City> citys = Lists.newArrayList();
        citys.add(City.builder().id(Long.valueOf(1)).name("北京").count(100000).build());
        citys.add(City.builder().id(Long.valueOf(2)).name("上海").count(300000).build());
        citys.add(City.builder().id(Long.valueOf(3)).name("广州").count(500000).build());
        citys.add(City.builder().id(Long.valueOf(4)).name("深圳").count(700000).build());

        /**
         * anyMatch()(元素是否匹配)
         */
        boolean isExist1 = citys.stream().anyMatch(city -> city.getName().equals("北京"));


        /**
         * allMatch()(所有元素是否匹配)
         */
        boolean isExist2 = citys.stream().allMatch(city -> city.getName().equals("北京"));


        /**
         * forEach()(遍历集合)
         */
        citys.stream().forEach(city -> {
            System.err.println(city.name);
        });


        /**
         * filter()(过滤器)
         */
        List<City> list1 = citys.stream().filter(city -> city.count > 300000).collect(Collectors.toList());


        /**
         * Collectors.toMap()(结果集转Map)
         *    toMap()
         * 	    参数1 : 生成key
         * 	    参数2 : 生成value
         * 	    参数3 : 如果新元素产生的key在Map中已经出现过了,第三个参数进行定义解决的办法 (如果未进行定义参数3,代码则在运行的时候出现异常)
         */
        // 原对象作为value
        Map<String, City> map1 = citys.stream().collect(Collectors.toMap(City::getName, Function.identity()));
        Map<String, City> map2 = citys.stream().collect(Collectors.toMap(City::getName, v -> v));

        // 对象中某元素作为value
        Map<String, Integer> map3 = citys.stream().collect(Collectors.toMap(City::getName, v -> v.getCount()));
        Map<String, Integer> map4 = citys.stream().collect(Collectors.toMap(City::getName, City::getCount));

        // 当Map中出现相同的key,则使用新的value代替旧的value
        Map<String, City> map5 = citys.stream().collect(Collectors.toMap(City::getName, v -> v, (oldValue, newValue) -> newValue));


        /**
         * distinct()(去重)
         */
        List<City> list2 = citys.stream().distinct().collect(Collectors.toList())


        /**
         * summaryStatistics()(统计)
         */
        IntSummaryStatistics intSummaryStatistics = citys.stream().mapToInt((c) -> c.count).summaryStatistics();
        System.err.println("最大值:" + intSummaryStatistics.getMax());
        System.err.println("最小值:" + intSummaryStatistics.getMin());
        System.err.println("总和:" + intSummaryStatistics.getSum());
        System.err.println("平均值:" + intSummaryStatistics.getAverage());
        System.err.println("总条数:" + intSummaryStatistics.getCount());


        /**
         * map()(将某元素转新的集合)
         */
        List<Integer> list3 = citys.stream().map(City::getCount).collect(Collectors.toList());


        /**
         * sorted()(集合排序)
         */
        List<City> list4 = citys.stream().sorted(Comparator.comparing(City::getCount).reversed()).collect(Collectors.toList());


        /**
         * limit()(集合截取)
         */
        List<City> list5 = citys.stream().limit(3).collect(Collectors.toList());

		/**
         * Collectors.groupingBy() 数据分组
         */
        Map<Long, List<City>> map6 = citys.stream().collect(Collectors.groupingBy(City::getId));
        
    }

}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值