欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JDK1.8新特性

程序员文章站 2022-03-04 08:38:20
...

lambda表达式

创建匿名内部类

// 1.8前创建匿名内部类
 	Converter<String ,Integer> converter = new Converter<String, Integer>() {
        @Override
        public Integer converter(String s) {
            return Integer.parseInt(s);
        }
    };
// 1.8后创建匿名内部类方法1
	Converter<String ,Integer> converter = (f) -> {
        return Integer.valueOf(f);
    };
// 1.8后创建匿名内部类方法2
	Converter<String ,Integer> converter = (f) -> Integer.parseInt(f);

lambda和stream结合:过滤

    public static void main(String[] args) {
        // lambda与Stream结合使用
        // 创建Stream对象
        Stream<String> stream = Stream.of("aaa","bbb","ccc");
        // 列表转Stream对象
        ArrayList<String> array = new ArrayList<String>();
        array.add("a");
        array.add("b");
        array.add("c");

        // 使用lambda表达式过滤出以"a"开头的流
        stream.filter((s) -> s.startsWith("a")).forEach(s -> System.out.println(s)); // 打印aaa
        array.stream().filter(s -> s.startsWith("a")).forEach(s -> System.out.println(s)); // 打印a
    }

lambda和stream结合:过滤+统计

    public static void main(String[] args) {
        // lambda与Stream结合使用
        // 创建Stream对象
        Stream<String> stream = Stream.of("aaa","bbb","ccc");

        // 使用lambda表达式过滤出以"a"开头的流,并统计出过滤后的元素个数
        long count = stream.filter(s -> s.startsWith("a")).count();
        System.out.println(count); // 打印1
    }

lambda双冒号的使用

	public static void main(String[] args) {
        // lambda与Stream结合使用
        // 创建Stream对象
        Stream<String> stream = Stream.of("aaa","bbb","ccc");

        // 双冒号的使用:将方法作为一个参数传入到stream内部,使stream里面的每一个参数都在该方法中执行一次
        stream.forEach(TestClass::printStr); // 打印aaa bbb ccc
    }

    public static void printStr(String str) {
        System.out.print(str + " ");
    }

上一篇: JDK1.8新特性

下一篇: JDK1.8新特性