Lambda 表达式

Lambda 表达式的定义及用法:
Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得
名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函
数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)
在java 8中,lambda表达是只有一个抽象方法的接口。(本质使用的,是接口中的那个抽象方
法,使用lambda表达式来实现)。
Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。
Lambda 允许把函数(函数式接口)作为一个方法的参数(函数作为参数传递进方法中)。
使用 Lambda 表达式可以使代码变的更加简洁紧凑,有效避免内部匿名类出现。

练习数字排序

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Jk {
    public static void main(String[] args) {
//    数字的小数排序
        List<Double> list1= new ArrayList<>(List.of(10d, 20d,30d,401d,100d,12d));
//        不排序
        System.out.println("list1");
//        升序
        Collections.sort(list1);
        System.out.println(list1);
//        降序
        Collections.sort(list1,(a, b) ->(int)(b-a));
        System.out.println(list1);
//        乱序
        Collections.shuffle(list1);
        Collections.shuffle(list1);
        System.out.println(list1);

//        整数排序
        List<Integer> list2= new ArrayList<>(List.of(10,20,30,11,34));
//        不排序
        System.out.println(list2);
//        升序
        Collections.sort(list2);
        System.out.println(list2);
//        降序
        Collections.sort(list2,(a,b)->b-a);
        System.out.println(list2);
//       乱序
        Collections.shuffle(list2);
        Collections.shuffle(list2);
        Collections.shuffle(list2);
        System.out.println(list2);
    }

}

输出结果:
在这里插入图片描述

练习字符串排序:


import java.util.Arrays;
import java.util.Comparator;
import java.util.Random;

public class Bds1 {
    public static void main(String[] args) {
        String[] langs = {"java","javascript","python","go","c"};
        System.out.println(Arrays.toString(langs));

//        升序  Arrays 工具类.sort()静态方法
        Arrays.sort(langs);
        System.out.println(Arrays.toString(langs));

//        降序
//        Arrays.sort(langs,(a, b) -> b.compareTo(a));
        Arrays.sort(langs, Comparator.reverseOrder());
        System.out.println(Arrays.toString(langs));
//       乱序
        Random rand = new Random();
        Arrays.sort(langs,(a, b)-> rand.nextBoolean() ? 1:-1);
        Arrays.sort(langs,(a, b)-> rand.nextBoolean() ? 1:-1);
        System.out.println(Arrays.toString(langs));
        
    }
}

输出结果:
在这里插入图片描述

流技术Stream

定义:Java 8 版本新增的Stream,配合同版本出现的Lambda ,给我们操作集合(Collection)提供了极大的便利。Stream流是JDK8新增的成员,允许以声明性方式处理数据集合,可以把Stream流看作是遍历数据集合的一个高级迭代器。Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找/筛选/过滤、排序、聚合和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。
简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式。

面试题
要求:计算1+2+3+…+100=?(不使用循环递归)

import java.util.stream.IntStream;

public class Bds2 {
    public static void main(String[] args) {
//        使用循环
          int s = 0;
          for (int i = 0; i <= 100; i++) s += i;
          System.out.println("1+2+3+...+100 =" + s);

//        使用递归
          int ss = sum(100);
          System.out.println("1+2+3+...+100=" + ss);

//       使用IntStream
        int s3 = IntStream.rangeClosed(1, 100).sum();
        System.out.println("1+2+3+...+100=" + s3);

        IntStream s4 = IntStream.rangeClosed(1, 100).filter(e -> e > 50 && e % 2 == 0).map(e -> e + 1);
        System.out.println(s4.sum());\\求出50100偶数之和
        
    }

    public static int sum(int i) {
        if (i > 0) {
            return i + sum(--i);
        }
        return 0;
    }
}

输出结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值