Java教程

Java8新特性学习,lambda表达式与stream

本文主要是介绍Java8新特性学习,lambda表达式与stream,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java8新特性学习

Lambda表达式

写法(参数列表)->{实现} 如果实现一行本身是函数主体,可以省略括号

函数式接口

  • 一个接口中定义了唯一一个抽象方法
  • 通过@FunctionalInterface 进行注解
  • 改进了匿名内部类

例如

        new Thread(new Runnable(){

            @Override
            public void run() {
                // TODO Auto-generated method stub
                System.out.println("匿名");
            }
            
        }).start();

可以写为

        new Thread(() -> {
            System.out.println("Lambda");
        }).start();

Stream流

生成方式

  • Collection通过.stream生成
  • Map体系的集合间接生成。比如map.keySet()得到键的集合再生成。
  • 数组通过Stream的静态方法。

String[] st = {"woc","nm"}
Stream<String > stream = Stream.of(st);
也可以直接传递可变参数例如
Stream.of(1,2,3,4,4)

常见的中间操作方法

  • filter(Predicate)

Predicate boolean test(T t);

  • limit() 截取指定参数个数的数据。
  • .skip() 跳过指定参数
  • .distinct() 返回不重复元素
  • 静态方法Stream.contact(s1,s2)合并流
  • sorted([比较器])
  • 收集方法

liststream.collect(Collectors.toList())将流的数据收集到List
Collectors.groupingBy(分组,[操作])
例如获得一个Map
Map<String,Long> = stringList.stream().collect(Collectors(groupingBy(x->x,Collectors.countint())))

这篇关于Java8新特性学习,lambda表达式与stream的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!