新时代的程序员4大本领:lambda表达式,链式编程,函数式接口,Stream流式计算

传统程序员4大本领:泛型,枚举,反射,注解

新时代的程序员4大本领:lambda表达式,链式编程,函数式接口,Stream流式计算

1.lambda表达式

// 1. 不需要参数,返回值为 5
() -> 5

// 2. 接收一个参数(数字类型),返回其2倍的值
x -> 2 * x

// 3. 接受2个参数(数字),并返回他们的差值
(x, y) -> x – y

// 4. 接收2个int型整数,返回他们的和
(int x, int y) -> x + y

// 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)
(String s) -> System.out.print(s)

  1. 链式编程

可以简化编程,代码简洁
它允许将多个函数或操作连接在一起,形成一个链条,以执行复杂的操作
String sb=new StringBuilder().append("hello").append("world").toString();

  1. 函数式接口:FunctionaInterfae 只有一个方法的接口 Runable,Function

作用:简化编程模型,在新版本的框架底层大量应用

//Function 有输入输出参数
Function function=new Function<String,String>(){
  @Override
  public String apply(String str){
     return str;
  }
}

Function<String,String> function=(str)->{return str;};

function.apply("hello");

//断定型接口Predicate:有一个输入参数,只返回bool
Predicate<String> predicte=(str)->{return str.isEmpty();};

//消费型接口Consumer:只有输入,没有输出
Consumer consumer=(str)->{System.out.print{"hello");};

4.stream流计算

User u1=new User(1,"a",21);
User u2=new User(2,"b",22);
User u3=new User(3,"c",23);
User u4=new User(4,"d",24);
//集合是存储数据
List<User> list=Array.asList(u1,u2,u3,4u);

//计算交给stream流
>  //lambda 表达式,链式编程,函数式接口,Stream流式计算
>  //找出用户id为偶数,年龄大约23岁,用户名转为大写字母,用户名倒序,输出1个用户的查询
>  list.stream()
    .filter(u->{return u.getId() % 2 ==0;})
    .filter(u->{return u.getAge() >23;})
    .map(u->{return u.getName().toUpterCase();})
    .sorte((uu1,uu2)->{return uu2.compareTo(uu1);})
    .limit(1)
    .forEach(System.out::printIn);

//并行流 比for计算快100倍,比forkjoin快80倍
long start=System.currentTimeMillis();
long sum=LongStream.rangeClosed(0L,1_0000_0000L).parallel().reduce(0,Long::sum);
long end=System.currentTimeMillis();
System.out.printIn("time:"+(end-start));

Java中对于流式计算的实现
所在包: java.util.stream
应用场景:主要是对 集合数据 进行操作,其很多操作方法和sql的作用和类似,把 list 转成 流对象,目的是为了使用流的方法 => 这样就可以处理一些比较复杂的业务
常用的一些方法:

filter(对数据进行过滤)
map(对数据进行映射操作)
limit(限制数据条数)
count(求取数据量)
sorted(排序)
collect (收集集合)

  1. 异步回调CompletableFuture
//有返回值的回调
ComletableFuture<Integer> com=ComletableFuture.suppLyAsync(()->{return 1024;});

//没有返回值的回调

posted @ 2024-06-03 10:24  大树2  阅读(9)  评论(0编辑  收藏  举报