Java8 lambda表达式使用总结

总结了一下自己常用的lambda式。

package com.gm.test;

import org.junit.Test;

import java.util.*;
import java.util.stream.Collectors;

import static java.lang.System.out;

/**
 * Created by zhangshuai on 2017/8/26.
 */
public class LambdaTest {

    private List<TestClass> list = null;

    private void initMethod(){
        list = new ArrayList<>();
        list.add(new TestClass(1,"1"));
        list.add(new TestClass(2,"a"));
        list.add(new TestClass(3,"c"));
    }

    /**
     * 转简单的foreach循环
     */
    @Test
    public void testForEach(){
//        list.forEach(p -> {
//            p.setOne(p.getOne() + 1);
//        });
        //参数是Consumer<? super T>
        list.stream().forEach(p ->
            p.setOne(p.getOne() + 1)
        );
        System.out.println(list);
    }

    /**
     * 转list为Map
     */
    @Test
    public void testListToMap(){
        this.initMethod();
//        Collectors.toMap(TestClass :: getOne(key值), p -> p(value))
        //参数是两个Function
//        Map<Integer,Object> map = list.stream().collect(Collectors.toMap(TestClass :: getOne, p -> p));
        Map<Integer,Object> map = list.stream().collect(Collectors.toMap(TestClass :: getOne, p -> p.getTwo()));
        out.println(map);
    }


    /**
     * 排序
     */
    @Test
    public void testSorted(){
        initMethod();
        //默认的排序
//        参数是Comparator<? super T>
        list.stream().sorted(Comparator.comparingInt(TestClass :: getOne));
        out.println(list);
        //修改排序规则后的排序
        //参数是Comparator<? super T>
        list.sort((TestClass t1, TestClass t2) -> t2.getOne() - t1.getOne());
        out.println(list);
    }

    /**
     * 过滤
     */
    @Test
    public void testFilter(){
        initMethod();
        //filter的参数是Predicate<? super T>
        List<TestClass> list2 = list.stream().filter(p -> p.getOne() > 2).collect(Collectors.toList());
        System.out.println(list2);
    }

    /**
     * max or min(获取最大或者最小)
     */
    public void testMaxOrMin(){
        initMethod();
        //参数是Comparator<? super T>
        list.stream().max(Comparator.comparingInt(TestClass :: getOne));

        out.println();
    }
}

注意各种方法的参数,我本人是根据参数来区分如何写的
以上是我自己常用的lambda表达式,更多请参考,developerworks我是参考这个学习的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值