Java8新特性之四大内置核心函数式接口
一. Consumer: 消费型接口
void accept(T t);
@Test
public void test1(){
operate(100,(x)->{
System.out.println(x*x);
});
operate(100,(x)->{
System.out.println(x/x);
});
}
public void operate(double money, Consumer consumer){
consumer.accept(money);
}
二. Supplier: 供给型接口
T get();
@Test
public void test2(){
List numList = getNumList(10, () -> {
return (int) (Math.random() * 100);
});
for (Integer num : numList) {
System.out.println(num);
}
}
//产生指定个数的整数并放入集合中。
public List getNumList(int num, Supplier supplier){
List list=new ArrayList<>();
for (int i = 0; i < num; i++) {
list.add(supplier.get());
}
return list;
}
三. Function: 函数型接口
R apply(T t);
@Test
public void test3(){
String s1 = strHandler("\t\t\tfjhnb ", (str) -> {
return str.trim();
});
System.out.println(s1);
String s2 = strHandler("fjhnb",(str)->{
return str.substring(3,5);
});
System.out.println(s2);
}
//用于处理字符串
public String strHandler(String str, Function function){
return function.apply(str);
}
四. Predicate: 断言型接口
boolean test(T t);
@Test
public void test4(){
List list = Arrays.asList("FJH", "nb", "One","English","Apple");
List filterList = filterStr(list, (str) -> {
return str.length() > 3;
});
for (String s : filterList) {
System.out.println(s);
}
}
//将满足条件的字符串,放入集合中去
public List filterStr(List list, Predicate predicate){
List strList = new ArrayList<>();
for (String str : list) {
if (predicate.test(str)){
strList.add(str);
}
}
return strList;
}