1. 程式人生 > 其它 >一對一直播原始碼,搜尋內容時自動模糊匹配相關內容

一對一直播原始碼,搜尋內容時自動模糊匹配相關內容

一 、Java內建四大核心函式式介面

1.1 Consumer<T> (消費型介面)

  • 引數型別:T

  • 返回型別:void

  • 用途:對型別為T的物件應用操作,包含方法:void accept(T, t)

  • public void test1(){
            //匿名內部類寫法
            happyTime(500, new Consumer<Double>() {
                @Override
                public void accept(Double aDouble) {
                    System.out.println("學習太累了,花" + aDouble + "元買瓶水");
                }
            });
            //Lambda表示式寫法
            happyTime(500, money -> System.out.println("學習太累了,花" + money + "元買瓶水"));
        }
    public void happyTime(double money, Consumer<Double> con){
            con.accept(money);
        }
    

1.2 Supplier<T> (供給型介面)

  • 引數型別:無

  • 返回型別:T

  • 用途:返回為T的物件,包含方法:T get()

  • public void test2(){
         
            Employee emp = new Employee("1001","Tom",23,5600);
            //匿名內部類寫法
            Supplier<String> sup2 = new Supplier<String>() {
                @Override
                public String get() {
                    return emp.getName();
                }
            }
            //Lambda表示式寫法
            System.out.println(sup1.get());
            Supplier<String> sup2 = () -> emp.getName();
            System.out.println(sup2.get());
        }
    

1.3 Function<T,R> (函式型介面)

  • 引數型別:T

  • 返回型別:R

  • 用途:對型別為T的物件應用操作,並返回結果。結果是R型別的物件。包含方法:R apply(T t)

  • 
    public void test3(){
            //匿名內部類寫法
            Function<String, Employee> func1 = new Function<String, Employee>() {
                @Override
                public Employee apply(String s) {
                    return new Employee(s);
                }
            }
            System.out.println(func1.apply("2211"));
            //Lambda表示式寫法
            Function<String, Employee> func1 = (s) -> new Employee(s);
            System.out.println(func1.apply("2211"));
        }
    

1.4 Predicate<T> (判定型介面)

  • 引數型別:T

  • 返回型別:boolean

  • 用途:確定型別為T的物件是否滿足某約束,並返回boolean值。包含方法 boolean test(T t)

  •  public void test4(){
            //匿名內部類方法
            List<String> list = Arrays.asList("北京", "南京", "天津", "東京");
            List<String> list1 = filterString(list, new Predicate<String>() {
                @Override
                public boolean test(String s) {
                    return s.contains("京");
                }
            });
            System.out.println(list1);
            //lambda表示式方法
            List<String> list2 = filterString(list, s -> s.contains("京"));
            System.out.println(list2);
        }
     //根據給定的規則,過濾集合中的字串。此規則由Predicate的方法決定
     public List<String> filterString(List<String> list, Predicate<String> pre){
            ArrayList<String> filter = new ArrayList<>();
            for(String s : list){
                if(pre.test(s)){
                    filter.add(s);
                }
            }
            return filter;
        }