《Java 8 实战》---- 流

Posted coder为

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Java 8 实战》---- 流相关的知识,希望对你有一定的参考价值。

流是Java API的新成员,它允许以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现)。

Java 7 从集合中选出低热量菜肴名称:

List<Dish> lowCaloricDishes = new ArrayList<>();
        for (Dish d: menu) {
            if (d.getCalories() < 400) {
                lowCaloricDishes.add(d);
            }
        }
        
        Collections.sort(lowCaloricDishes, new Comparator<Dish>() {
            public int compare(Dish d1, Dish d2) {
                return Integer.compare(d1.getCalories(), d2.getCalories());
            }
        });
        List<String> lowCaloricDishesName = new ArrayList<>();
        for(Dish d: lowCaloricDishes) {
            lowCaloricDishesName.add(d.getName());
        }

Java 8 :

List<String> lowCaloricDishesName2 = menu.stream()
                .filter(d -> d.getCalories() < 400)
                .sorted(comparing(Dish::getCalories))
                .map(Dish::getName)
                .collect(toList());

如果要多核架构并行执行这段代码,只需要把stream()换成parallelStream():

List<String> lowCaloricDishesName2 = menu.parallelStream()
                .filter(d -> d.getCalories() < 400)
                .sorted(comparing(Dish::getCalories))
                .map(Dish::getName)
                .collect(toList());

 

以上是关于《Java 8 实战》---- 流的主要内容,如果未能解决你的问题,请参考以下文章

《Java 8 实战》---- 流

Java 8 stream 实战

java内存流:java.io.ByteArrayInputStreamjava.io.ByteArrayOutputStreamjava.io.CharArrayReaderjava.io(代码片段

Java 8实战 (笔记)第一章

java缓冲字符字节输入输出流:java.io.BufferedReaderjava.io.BufferedWriterjava.io.BufferedInputStreamjava.io.(代码片段

行为参数化与lambda表达式 - 读《Java 8实战》