四大核心函数式接口的描述:
四个核心接口示例
1、Consumer<T>:消费型接口
void accept(T t);
@Test
public void test01(){
happy(100, x -> System.out.println("今晚总共消费了:"+ x + "元"));
}
private void happy(double money, Consumer consumer) {
consumer.accept(money);
}
2、Supplier<T>:供给型接口
T get();
// 需求:产生指定个数的整数,然后放入集合
@Test
public void test02(){
List<Integer> list = new ArrayList<>();
numList(list, 10, () -> (int) (Math.random() * 100));
list.forEach(System.out::println);
}
private List<Integer> numList(List<Integer> list, int sum, Supplier<Integer> supplier) {
for (int i = 0; i < sum; i++) {
list.add(supplier.get());
}
return list;
}
3、Function<T, R>:函数型接口
R apply(T t);
// 处理一个字符串
@Test
public void test03(){
String result = handleString("Hello", (str) -> str.substring(1,4));
System.out.println(result);
}
private String handleString(String str, Function<String, String> function){
return function.apply(str);
}
4、Predicate<T>:断言型接口
boolean test(T t);
// 需求:将满足条件的字符串放入集合中
@Test
public void test04(){
List<String> list = Arrays.asList("Sarah", "Terry", "Selina", "Tom");
List<String> newStrList = filterString(list, (x) -> x.contains("S"));
newStrList.forEach(System.out::println);
}
private List<String> filterString(List<String> list, Predicate<String> predicate){
List<String> strList = new ArrayList<>();
for(String str : list){
if(predicate.test(str)){
strList.add(str);
}
}
return strList;
}
其他接口