lambda是一个匿名函数
//匿名内部类
Collections.sort(list2, new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return o1.getName().compareTo(o2.getName());
}
//使用lambda表达式
Collections.sort(list2,(User o1,User o2)->{return o1.getName().compareTo(o2.getName());});
/**
* 四大内置函数型接口
* Consumer<T> 消费性接口 (有来无回)
* void accept(T t)
* BiConsumer<T,T>
* void accpet(T t1,T t2)
*
* Predicate<T> 段言型
* boolean test(T t)
* BiPredicate<T,T>
* boolean test(T t1,T t2)
*
* Function<T,R> 函数型接口
* R apply(T t)
* BiFunction<T,T,R>
* R apply(T t1,T t2)
*
* Supplier<T> 供给型接口
* T get()
*/
public class FunctionDemo01 {
public static void main(String[] args) {
consumer(1000,(money)-> System.out.println("消费了"+money+"元"));
//如果字符个数>3,就放入新容器中返回
List<String> list = new ArrayList();
list.add("123");
list.add("12");
list.add("1");
list.add("1234");
list.add("12345");
List<String> list2 = predicate(list,(s)->s.length()>3);
System.out.println(list2);
//去除前后的空格
System.out.println(function(" ab ",(str)->{return str.trim();}));
//产生10个, 1~10之间的随机数返回
List<Integer> list3 = supplier(10, () -> (int) (Math.random() * (10) + 1));
System.out.println(list3);
}
//消费型接口
public static void consumer(int money, Consumer<Integer> com){
com.accept(money);
}
//段言型接口,对一个字符串容器中的数据进行判断过滤,过滤条件:如果字符个数>3,就放入新容器中返回
public static List<String> predicate(List<String> list, Predicate<String> pred){
List<String> newList=new ArrayList<>();
for(String str:list){
if(pred.test(str)){
newList.add(str);
}
}
return newList;
}
//函数型接口
//可以对某个字符串,进行某种操作,结果返回
public static String function(String str, Function<String,String> function){
return function.apply(str);
}
//供给型接口使用
//指定规则,指定个数,产生满足条件个数的数字返回
public static List<Integer> supplier(int num, Supplier<Integer> sup){
List<Integer> newList=new ArrayList<>();
for (int i = 0; i <num ; i++) {
newList.add(sup.get());
}
return newList;
}
}