- Consumer
:消费型接口
void accept(T t);
- Supplier
:供给型接口
T get();
- Function
:函数型接口
R apply(T t);
- Predicate
:断言型接口
boolean test(T t);
- Comparator
: 比较器接口
Consumer:消费型接口
该接口为消费型接口,通过调用内部的accept(T t)方法,对t进行消费(操作)
抽象方法:
void accept(T t);
示例代码:
package cn.unuuc.java.stream;import java.util.function.Consumer;public class Test04 {public static void main(String[] args) {happy(1000,(m)-> System.out.println(m));}public static void happy(double money, Consumer<Double> consumer){consumer.accept(money);}}
Supplier:供给型接口
用于创建对象(数据),可以看成是一个生产间,但是需要的生产材料不给你,但是生产出来的产品需要指定。该接口用于生产数据供给使用。
抽象方法:
T get();
代码示例:
package cn.unuuc.java.stream;import java.util.ArrayList;import java.util.function.Supplier;public class Test04 {public static void main(String[] args) {ArrayList<Integer> numList = getNumList(10, () -> (int) (Math.random() * 100));numList.stream().forEach(e -> System.out.println(e));}// Supplier 示例// 生产指定个数的数,并放入集合中public static ArrayList<Integer> getNumList(int num, Supplier<Integer> supplier){ArrayList<Integer> list = new ArrayList<>();for (int i=0;i<num;i++){Integer integer = supplier.get();list.add(integer);}return list;}}
Function:函数型接口
用于对数据进行处理,处理完毕后将需要的接口返回出去。可以看作是加工厂,给你数据加工成我想要的数据。
抽象方法:
R apply(T t);
代码示例:
public class Test04 {public static void main(String[] args) {String newStr = strHandler("abcdefg", str -> str.toUpperCase());System.out.println(newStr);}// Function<T,R> 函数型接口,T表示传入类型,R表示返回类型// 需求,处理字符串public static String strHandler(String str, Function<String,String> function){return function.apply(str);}}
Predicate:断言型接口
对于数据进行判断
抽象方法:
boolean test(T t);
代码示例:
public class Test04 {public static void main(String[] args) {List<String> list = Arrays.asList("hello","world","!");ArrayList<String> fifterList = fifterStr(list, s -> {return s.length()>=5;});fifterList.forEach(s -> System.out.println(s));}// 需求:将满足条件的字符串添加到集合中public static ArrayList<String> fifterStr(List<String> list, Predicate<String> pre){ArrayList<String> strList = new ArrayList<>();list.stream().forEach(s->{if (pre.test(s))strList.add(s);});return strList;}}
Comparator: 比较器接口
用于对数组,集合进行比较,通常在集合实现类中存在一个sort()方法,sort()方法传入一个Comparator类型的对象。
抽象方法:
int compare(T o1, T o2);
该方法是根据放回来判断o1和o2的大小:
- 返回值小于0:o1<o2
- 返回值大于0:o1>o2
- 返回值等于0:o1=o2
代码示例:
@Testpublic void test08(){ArrayList<UserEntity> userEntities = new ArrayList<>();userEntities.add(new UserEntity("小明",12));userEntities.add(new UserEntity("小红",22));userEntities.add(new UserEntity("小蓝",13));userEntities.add(new UserEntity("小绿",16));userEntities.add(new UserEntity("小紫",21));userEntities.sort(new Comparator<UserEntity>() {@Overridepublic int compare(UserEntity o1, UserEntity o2) {return o1.getAge()- o2.getAge();}});userEntities.forEach((u)-> System.out.println(u.toString()));}
这几个是基本的函数式接口,在java.util.function包下还有更多的函数式接口,以满足使用
