ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

简记Java8 Lambda表达式的使用

2019-05-15 11:47:46  阅读:208  来源: 互联网

标签:p2 stream List list1 Java8 简记 println EntityDTO Lambda


package com.king.service;

import lombok.Data;
import org.junit.Assert;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @Description
 * @Author HHJ
 * @Date 2019-05-15 11:00
 */
@Data
class EntityDTO {
    Long id;
    String age;
    String name;
}

public class LambdaTest {

    public static void main(String[] args) {
        EntityDTO dto = new EntityDTO();
        EntityDTO dto1 = new EntityDTO();
        EntityDTO dto2 = new EntityDTO();
        EntityDTO dto3 = new EntityDTO();
        dto.setId(1L);
        dto.setAge("1");
        dto1.setId(2L);
        dto1.setAge("2");
        dto2.setId(3L);
        dto2.setAge("3");
        dto3.setId(20L);
        dto3.setAge("20");

        //此时顺序是乱的
        List<EntityDTO> list = Arrays.asList(dto, dto2, dto1, dto3);
        list.stream().forEach(System.out::println);
        System.out.println("================上面是原始数据=====================");
        //filter 进行筛选
        List<EntityDTO> list1_4 = list
                .stream()
                .filter(p -> (p.getId() > 1))
                .collect(Collectors.toList());
        //去重
        List<EntityDTO> list1 = list1_4
                .stream()
                .distinct()
                .collect(Collectors.toList());

        //返回前 n 个元素
        List<EntityDTO> list1_5 = list1_4
                .stream()
                .limit(3)
                .collect(Collectors.toList());

        //去除前 n 个元素
        List<EntityDTO> list1_6 = list1_4
                .stream()
                .skip(0)
                .collect(Collectors.toList());

        //是否存在一个 person 对象的 age 等于 20:
        boolean b = list1_6.stream().anyMatch(p -> p.getAge().equals("20"));
        Assert.assertTrue(b);

        //获取其中一个属性的列表
        List<Integer> list2 = list1
                .stream()
                .map(p -> Integer.valueOf(p.getAge()))
                .collect(Collectors.toList());
        list2.stream().forEach(System.out::println);

        //总和
        int sum = list2.stream().reduce(0, Integer::sum);
        Assert.assertTrue(sum == 25);
        System.out.println("总和:" + sum);

        //对原集合进行操作
        //reduce 第一个参数 0 代表起始值为 new EntityDTO(),  (p1, p2) ->  a为上一个值,b 下一个新值
        EntityDTO list3 = list1
                .stream()
                .reduce(new EntityDTO(), (p1, p2) -> {
                    if (p1.getId() == null) {
                        return p2;
                    }
                    if (p1.getId() < p2.getId()) {
                        return p2;
                    }
                    return p1;
                });
        System.out.println("Id最大的对象:" + list3.toString());

        //对原集合进行排序
        List<EntityDTO> list4 = list1.stream()
                .sorted((p1, p2) -> (int) (p1.getId() - p2.getId()))
                .collect(Collectors.toList());
        System.out.println("================下面是原始数据排序后=====================");
        list4.stream().forEach(System.out::println);

    }
}

标签:p2,stream,List,list1,Java8,简记,println,EntityDTO,Lambda
来源: https://blog.csdn.net/hhj13978064496/article/details/90232605

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有