侧边栏壁纸
博主头像
侯秀荣

贪婪和恐惧是人性的两大弱点,
人类几万年,人性也没进步1厘米。

  • 累计撰写 172 篇文章
  • 累计收到 3 条评论

java8 lambda简单使用

2017-8-13 / 0 评论 / 1404 阅读
import com.alibaba.fastjson.JSON;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;

/**
 * Created by houxiurong on 2017/8/9.
 */
public class FunctionInterfaceDemo {

    /**
     * 断言型lambda
     */
    public static boolean doPredicate(int age, Predicate<Integer> predicate) {
        return predicate.test(age);
    }

    /**
     * 消费型lambda
     */
    public static void donation(Integer money, Consumer<Integer> consumer) {
        consumer.accept(money);
    }

    /*** 供给型接口 */
    public static List<Integer> supply(Integer num, Supplier<Integer> supplier) {
        List<Integer> resultList = new ArrayList<>();
        for (int x = 0; x < num; x++) {
            resultList.add(supplier.get());
        }
        return resultList;
    }

    /**
     * 函数型
     */
    public static Integer convert(String str, Function<String, Integer> function) {
        return function.apply(str);
    }

    /**
     * 断言型
     */
    public static List<String> filter(List<String> fruit, Predicate<String> predicate) {
        List<String> f = new ArrayList<>();
        for (String s : fruit) {
            if (predicate.test(s)) {
                f.add(s);
            }
        }
        return f;
    }

    public static void main(String[] args) {
        boolean isAdult = doPredicate(22, x -> x >= 18);
        System.out.println("断言型lambda:" + isAdult);

        //消费型
        donation(1000, money -> System.out.println("好心的麦乐迪为Blade捐赠了" + money + "元"));

        //供给型
        List<Integer> list = supply(10, () -> (int) (Math.random() * 100));
        //list.forEach(System.out::println);

        //函数型
        Integer integer = convert("28", x -> Integer.parseInt(x));
        System.out.println("函数型:" + integer);

        //断言型
        List<String> fruit = Arrays.asList("香蕉", "哈密瓜", "榴莲", "火龙果", "水蜜桃");
        List<String> newFruit = filter(fruit, (f) -> f.length() == 3);
        System.out.println(JSON.toJSONString(newFruit));

        //list的sort
        List<Integer> sortlist = Arrays.asList(2, 7, 3, 1, 8, 6, 4, 10);
        //sortlist.sort(Comparator.naturalOrder());//自然顺序
        sortlist.sort(Comparator.reverseOrder());//自然倒序

        System.out.println(JSON.toJSONString(sortlist));

    }

}


评论一下?

OωO
取消