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<Double> consumer){
consumer.accept(money);
}


二. Supplier: 供给型接口
T get();
@Test
public void test2(){
List<Integer> numList = getNumList(10, () -> {
return (int) (Math.random() * 100);
});
for (Integer num : numList) {
System.out.println(num);
}
}
//产生指定个数的整数并放入集合中。
public List<Integer> getNumList(int num, Supplier<Integer> supplier){
List<Integer> list=new ArrayList<>();
for (int i = 0; i < num; i++) {
list.add(supplier.get());
}
return list;
}

三. Function<T,R>: 函数型接口
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<String,String> function){
return function.apply(str);
}

四. Predicate: 断言型接口
boolean test(T t);
@Test
public void test4(){
List<String> list = Arrays.asList("FJH", "nb", "One","English","Apple");
List<String> filterList = filterStr(list, (str) -> {
return str.length() > 3;
});
for (String s : filterList) {
System.out.println(s);
}
}
//将满足条件的字符串,放入集合中去
public List<String> filterStr(List<String> list, Predicate<String> predicate){
List<String> strList = new ArrayList<>();
for (String str : list) {
if (predicate.test(str)){
strList.add(str);
}
}
return strList;
}


浙公网安备 33010602011771号