java Stream結合函式方法

renke發表於2021-09-11

java Stream結合函式方法

本教程操作環境:windows7系統、java10版,DELL G3電腦。

1.對映

如果想透過某種操作把一個流中的元素轉化成新的流中的元素,可以使用 map() 方法。

public class MapStreamDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("周杰倫");
        list.add("王力宏");
        list.add("陶喆");
        list.add("林俊杰");
        Stream<Integer> stream = list.stream().map(String::length);
        stream.forEach(System.out::println);
    }
}

2.排序

    public  void test3(){
        //(1)自然排序
        List<Integer> list  = Arrays.asList(4,3,7,9,12,8,10,23,2);
        Stream<Integer> stream = list.stream();
        stream.sorted().forEach(System.out::println);
        //(2)物件排序:物件類可以先實現comparable介面,或者是直接指定
        //第一種:先實現compable介面
        List<Student> studentList  = StudentData.getStudents();
        studentList.stream().sorted().forEach(System.out::println);
        //第二種:直接指定comparable
        List<Student> studentList1  = StudentData.getStudents();
        studentList1.stream()
                .sorted((e1,e2)-> Integer.compare(e1.getAge(),e2.getAge()))
                .forEach(System.out::println);
    }

3.組合

reduce() 方法的主要作用是把 Stream 中的元素組合起來,它有兩種用法:

Optional reduce(BinaryOperator accumulator)

沒有起始值,只有一個引數,就是運算規則,此時返回 Optional。

T reduce(T identity, BinaryOperator accumulator)

有起始值,有運算規則,兩個引數,此時返回的型別和起始值型別一致。

public class ReduceStreamDemo {
    public static void main(String[] args) {
        Integer[] ints = {0, 1, 2, 3};
        List<Integer> list = Arrays.asList(ints);
 
        Optional<Integer> optional = list.stream().reduce((a, b) -> a + b);
        Optional<Integer> optional1 = list.stream().reduce(Integer::sum);
        System.out.println(optional.orElse(0));
        System.out.println(optional1.orElse(0));
 
        int reduce = list.stream().reduce(6, (a, b) -> a + b);
        System.out.println(reduce);
        int reduce1 = list.stream().reduce(6, Integer::sum);
        System.out.println(reduce1);
    }
}

以上就是關於java Stream對映、排序和組合的操作方法介紹,根據上面的簡單分析執行程式碼節課實現,下次遇到這類問題,可以考慮下使用Stream來解決。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/430/viewspace-2831357/,如需轉載,請註明出處,否則將追究法律責任。

相關文章