stream里lambda的使用

匿名内部类

适用于那些只需要使用一次的类,例如现在存在一个接口,该接口里的方法只会被使用一次,按传统的做法就是专门写一个实现类来重写接口里的方法,这时会显得过于复杂且会生成这个类的.class文件;通过匿名内部类就能简化编程且不会生成.class文件

基础语法

new 需要实现的接口() | 父类构造器()
{
    //需要实现的方法或重载父类的方法
}


public class HelloWorld
{   
    static void info(Programmer programmer)
    {
        programmer.listLanguages();
        programmer.introduceMyself();
    }
    public static void main(String[] args)
    {   
        info(new Programmer(){
            public void listLanguages() {
                System.out.println("Objective-C Swift Python Go Java");
            }

            public void introduceMyself() {
                System.out.println("My Name is Jiaming Chen");
            }
        });
    }
}

lambda表达式

匿名内部类实现方式排序
        list.sort(new Comparator<String>(){
            public int compare(String o1, String o2) {
                return o1.compareTo(o2);
            }           
        });
lambda实现排序
list.sort((s1, s2)->s1.compareTo(s2));

Stream Api

stream支持串行和并发操作,并发操作使用的是fork/join模式,通过stream api来对集合执行并发操作

//先对集合进行过滤
List<String> array = stream.filter(User::isVip).sorted((t1, t2) -> t2.getBalance() - t1.getBalance()).limit(3).map(User::getUserID).collect(Collectors.toList());

注意map和flapMap,map是针对单集合,flatmap是针对嵌套集合的,flatmap可以对流进行扁平化

Stream<List<Integer>> inputStream = Stream.of(Arrays.asList(1), Arrays.asList(2, 3), Arrays.asList(4, 5, 6));
List<Integer> integerList = inputStream.flatMap((childList) -> childList.stream()).collect(Collectors.toList());
通过flatmap来拆分成一个集合,然后再对那个集合进行流化
 

fork/join模式

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值