File size: 2,504 Bytes
0284885
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package Stream_Termination_package;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.function.Consumer;
import java.util.function.IntFunction;

public class Stream_demo9 {
    public static void main(String[] args) {
        /*
            void forEach (Consumer action)              遍历
            long count ()                               统计
            toArray ()                             收集流中的数据,放到数组中
         */

        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list, "张无忌", "周芷若", "赵敏", "张强", "张三丰", "张翠由", "张良", "王二麻子", "谢广坤");


        // void forEach (Consumer action)              遍历

        // Consumer的泛型:表示流中数据的类型
        // accept方法的形参s:依次表示流里面的每一个数据
        // 方法体:对每一个数据的处理操作(打印)
        list.stream().forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.print(s + " ");
            }
        });
        System.out.println();

        list.stream().forEach(s -> System.out.print(s + " "));
        System.out.println();


        // long count ()          统计
        long count = list.stream().count();
        System.out.println(count);


        // toArray ()        收集流中的数据,放到数组中
        Object[] arr1 = list.stream().toArray();
        System.out.println(Arrays.toString(arr1));

        // IntFunction的泛型:具体类型的数组
        // apply的形参:流中数据的个数,要和数组的长度保持一致
        // apply的返回值:具体类型的数组
        // 方法体:就是创建数组

        // toArray方法的参数的作用,负责创建一个指定类型的数组
        // toArray方法的底层:会依次得到流里面的每一个数据,并把数据放到数组当中
        // toArray方法的返回值:是一个装着流里面所有数据的数组
        String[] arr2 = list.stream().toArray(new IntFunction<String[]>() {
            @Override
            public String[] apply(int value) {
                return new String[value];
            }
        });
        System.out.println(Arrays.toString(arr2));

        String[] arr3 = list.stream().toArray(value -> new String[value]);
        System.out.println(Arrays.toString(arr3));


    }
}