lamada 表达式的练习案例

Lambda表达式的标准格式
组成Lambda表达式的三要素:形式参数,箭头,代码块
Lambda表达式的格式
①、格式:(形式参数) -> {代码块}
②、形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可
③、->:由英文中画线和大于符号组成,固定写法。代表指向动作
④、代码块:是我们具体要做的事情,也就是以前我们写的方法体内容

import java.util.*;
import java.util.function.Function;
import java.util.function.IntBinaryOperator;
import java.util.function.IntConsumer;
import java.util.function.IntPredicate;
import java.util.stream.Collectors;

@SpringBootTest
class Springboot001ApplicationTests {

    @Test
    void contextLoads() {
        //查询未成年评分在70以上的作品
        List<Author> authors = new ArrayList<>();
        List<Book>  bookList=new ArrayList<>();
        Set<Book> uniquebookvalues = new HashSet<>();
        Set<Author> uniqueAuthorValues=new HashSet<>();
        for (Author author : authors) {
            if(uniqueAuthorValues.add(author)){
                if(author.getAge()<18){
                    List<Book> books = author.getBooks();
                    for (Book book : books) {
                        if(book.getScore()>70){
                            if(uniquebookvalues.add(book)){
                                bookList.add(book);
                            }
                        }
                    }
                }

            }
        }

        List<Book> collect=authors.stream()
                .distinct().filter(author -> author.getAge()<18)
                .map(author -> author.getBooks())
                .flatMap(Collection::stream )
                .filter(book -> book.getScore()>70)
                .distinct().collect(Collectors.toList());
    }
   @Test
    void test1(){
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("你咋了");
            }
        }).start();


//       List<DouArea> douAreas = new DouAreaService() {
//           @Override
//           public List<DouArea> queryAllDouArea(String parentId) {
//               return null;
//           }
//       }.queryAllDouArea("1");

//       System.out.println(douAreas);
//       DouAreaService douAreaService = new DouAreaServiceImpl();
//       List<DouArea> douAreas1 = douAreaService.queryAllDouArea("1");
//       System.out.println(douAreas1);
       new Thread(()->{
           System.out.println("线程启动了");
       }).start();
   }
    @Test
    void test3(){
//        int i = calculateNum(new IntBinaryOperator() {
//            @Override
//            public int applyAsInt(int left, int right) {
//                return left + right;
//            }
//        });
//        System.out.println(i);
//        int i = calculateNum((int left, int right) ->{
//            return left + right;
//        });
//        System.out.println(i);

        int i = calculateNum((int left, int right) ->
            left + right);
        System.out.println(i);
    }
   public static  int calculateNum(IntBinaryOperator operator){
        int a=10;
        int b=20;
        return operator.applyAsInt(a,b);
   }
    @Test
    void test4(){
//      printNum(new IntPredicate() {
//          @Override
//          public boolean test(int value) {
//              return value%2==1;
//          }
//      });

//        printNum((int value) ->{
//            return value%2==1;
//        });

        printNum(value ->
           value%2==1
        );
    }

    public static  void printNum(IntPredicate intPredicate){
        int[] arr={1,2,3,4,5,6,7,8,9,10};
        for (int i : arr) {
            if(intPredicate.test(i)){
                System.out.println(i);
            }
        }
    }
    @Test
    void test5(){
//        Object o = typeConver(new Function<String, Object>() {
//            @Override
//            public Object apply(String s) {
//                return s + "123";
//            }
//        });
//        System.out.println(o);


        Object o = typeConver((String s) ->
           s + "123"
        );
        System.out.println(o);
    }


    public static <R> R typeConver(Function<String,R> function){
        String str="12345";
        R result=function.apply(str);
        return result;
    }

    public static void foreachArr(IntConsumer intConsumer){
        int[] arr={1,2,3,4,5,6,7,8,9,10};
        for (int i : arr) {
            intConsumer.accept(i);
        }
    }
    @Test
    void test6(){
        foreachArr(value->{
            System.out.println(value+10 );
        });
    }

}

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值