四大函数式接口

import java.util.function.*;
import java.util.*;

public class Main {
    public static void main(String[] args) {
        System.out.println("=========================Consumer==========================");

        //HashMap没有顺序,底层为HashTable  根据hashcode排序
        HashMap<Integer, String> map = new HashMap<>();
        map.put(1, "alg");
        map.put(2, "bbb");
        map.put(4, "bsdabb");
        printOut(map, x -> x.forEach((k, v) -> System.out.println(k + "->" + v)));
        buy(35.6, "飞机", (x, y) -> System.out.println("我花了" + x + "元钱,买了一个" + y));


        System.out.println("=========================Supplier==========================");
        getList(5, () -> Math.random() * 100).forEach(System.out::println);

        System.out.println("=========================Function==========================");
        System.out.println(func("aoligei", String::toUpperCase));

        System.out.println("=========================Predicate==========================");
        List<String> list = new ArrayList<String>() {{
            this.add("奥利给");
            this.add("老王八");
            this.add("王八");
            this.add("老八");
        }};
        list = StrFilter(list, s -> s.contains("王"));  //重新赋值
        list.forEach(System.out::println);
    }


    //Consumer  消费型接口
    //Consumer可以接收一个泛型参数  BiConsumer可以接收两个泛型参数
    static void printOut(HashMap<Integer, String> map, Consumer<HashMap<Integer, String>> con) {
        con.accept(map);
    }

    static void buy(Double money, String toy, BiConsumer<Double, String> con) {
        con.accept(money, toy);
    }


    //Supplier  供给型接口
    static List<Double> getList(int size, Supplier<Double> sup) {
        List<Double> list = new ArrayList<>();
        for (int i = 0; i < size; i++) {

            list.add(sup.get());
        }

        return list;
    }

    //Function   函数型接口
    static String func(String str1, Function<String, String> function) {   //就是自己在参数里写方法来执行
        return function.apply(str1);
    }


    //Predicate   断言型接口
    static List<String> StrFilter(List<String> list, Predicate<String> predicate) {
        List<String> stringList = new ArrayList<>();
        for (String str : list) {
            if (predicate.test(str))    //predicate.test()判断传进来的值真假
                stringList.add(str);    //如果为真添加
        }
        return stringList;   //将新的List返回
    }


}

Result
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值