1+ package com .coderdream ;
2+
3+ import java .util .ArrayList ;
4+ import java .util .Arrays ;
5+ import java .util .IntSummaryStatistics ;
6+ import java .util .List ;
7+ import java .util .Random ;
8+ import java .util .stream .Collectors ;
9+ import java .util .Map ;
10+
11+ /**
12+ * @author :CoderDream
13+ * @date :Created in 2021/10/24 13:23
14+ * @description:
15+ * @modified By:CoderDream
16+ * @version: $
17+ */
18+ public class StreamDemo {
19+ public static void main (String args []) {
20+ System .out .println ("使用 Java 7: " );
21+
22+ // 计算空字符串
23+ List <String > strings = Arrays .asList ("abc" , "" , "bc" , "efg" , "abcd" , "" , "jkl" );
24+ System .out .println ("列表: " + strings ); // 列表: [abc, , bc, efg, abcd, , jkl]
25+ long count = getCountEmptyStringUsingJava7 (strings );
26+ System .out .println ("空字符数量为: " + count ); // 空字符数量为: 2
27+
28+ count = getCountLength3UsingJava7 (strings );
29+ System .out .println ("字符串长度为 3 的数量为: " + count ); // 字符串长度为 3 的数量为: 3
30+
31+ // 删除空字符串
32+ List <String > filtered = deleteEmptyStringsUsingJava7 (strings );
33+ System .out .println ("筛选后的列表: " + filtered ); // 筛选后的列表: [abc, bc, efg, abcd, jkl]
34+
35+ // 删除空字符串,并使用逗号把它们合并起来
36+ String mergedString = getMergedStringUsingJava7 (strings , ", " );
37+ System .out .println ("合并字符串: " + mergedString ); // 合并字符串: abc, bc, efg, abcd, jkl
38+
39+ List <Integer > numbers = Arrays .asList (3 , 2 , 2 , 3 , 7 , 3 , 5 );
40+
41+ // 获取列表元素平方数
42+ List <Integer > squaresList = getSquares (numbers );
43+ System .out .println ("平方数列表: " + squaresList ); // 平方数列表: [9, 4, 49, 25]
44+
45+ List <Integer > integers = Arrays .asList (1 , 2 , 13 , 4 , 15 , 6 , 17 , 8 , 19 );
46+
47+ System .out .println ("列表: " + integers ); // 列表: [1, 2, 13, 4, 15, 6, 17, 8, 19]
48+ System .out .println ("列表中最大的数 : " + getMax (integers )); // 列表中最大的数 : 19
49+ System .out .println ("列表中最小的数 : " + getMin (integers )); // 列表中最小的数 : 1
50+ System .out .println ("所有数之和 : " + getSum (integers )); // 所有数之和 : 85
51+ System .out .println ("平均数 : " + getAverage (integers )); // 平均数 : 9
52+ System .out .println ("随机数: " ); // 随机数:
53+
54+ // 输出10个随机数
55+ Random random = new Random ();
56+
57+ for (int i = 0 ; i < 10 ; i ++) {
58+ System .out .println (random .nextInt ());
59+ }
60+
61+ System .out .println ("使用 Java 8: " );
62+ System .out .println ("列表: " + strings ); // 列表: [abc, , bc, efg, abcd, , jkl]
63+
64+ count = strings .stream ().filter (string -> string .isEmpty ()).count ();
65+ System .out .println ("空字符串数量为: " + count ); // 空字符串数量为: 2
66+
67+ count = strings .stream ().filter (string -> string .length () == 3 ).count ();
68+ System .out .println ("字符串长度为 3 的数量为: " + count ); // 字符串长度为 3 的数量为: 3
69+
70+ filtered = strings .stream ().filter (string -> !string .isEmpty ()).collect (Collectors .toList ());
71+ System .out .println ("筛选后的列表: " + filtered ); // 筛选后的列表: [abc, bc, efg, abcd, jkl]
72+
73+ mergedString = strings .stream ().filter (string -> !string .isEmpty ()).collect (Collectors .joining (", " ));
74+ System .out .println ("合并字符串: " + mergedString ); // 合并字符串: abc, bc, efg, abcd, jkl
75+
76+ squaresList = numbers .stream ().map (i -> i * i ).distinct ().collect (Collectors .toList ());
77+ System .out .println ("Squares List: " + squaresList ); // Squares List: [9, 4, 49, 25]
78+ System .out .println ("列表: " + integers ); // 列表: [1, 2, 13, 4, 15, 6, 17, 8, 19]
79+
80+ IntSummaryStatistics stats = integers .stream ().mapToInt ((x ) -> x ).summaryStatistics ();
81+
82+ System .out .println ("列表中最大的数 : " + stats .getMax ()); // 列表中最大的数 : 19
83+ System .out .println ("列表中最小的数 : " + stats .getMin ()); // 列表中最小的数 : 1
84+ System .out .println ("所有数之和 : " + stats .getSum ()); // 所有数之和 : 85
85+ System .out .println ("平均数 : " + stats .getAverage ()); // 平均数 : 9.444444444444445
86+ System .out .println ("随机数: " ); // 随机数:
87+
88+ random .ints ().limit (10 ).sorted ().forEach (System .out ::println );
89+
90+ // 并行处理
91+ count = strings .parallelStream ().filter (string -> string .isEmpty ()).count ();
92+ System .out .println ("空字符串的数量为: " + count ); // 空字符串的数量为: 2
93+ }
94+
95+ private static int getCountEmptyStringUsingJava7 (List <String > strings ) {
96+ int count = 0 ;
97+
98+ for (String string : strings ) {
99+
100+ if (string .isEmpty ()) {
101+ count ++;
102+ }
103+ }
104+ return count ;
105+ }
106+
107+ private static int getCountLength3UsingJava7 (List <String > strings ) {
108+ int count = 0 ;
109+
110+ for (String string : strings ) {
111+
112+ if (string .length () == 3 ) {
113+ count ++;
114+ }
115+ }
116+ return count ;
117+ }
118+
119+ private static List <String > deleteEmptyStringsUsingJava7 (List <String > strings ) {
120+ List <String > filteredList = new ArrayList <String >();
121+
122+ for (String string : strings ) {
123+
124+ if (!string .isEmpty ()) {
125+ filteredList .add (string );
126+ }
127+ }
128+ return filteredList ;
129+ }
130+
131+ private static String getMergedStringUsingJava7 (List <String > strings , String separator ) {
132+ StringBuilder stringBuilder = new StringBuilder ();
133+
134+ for (String string : strings ) {
135+
136+ if (!string .isEmpty ()) {
137+ stringBuilder .append (string );
138+ stringBuilder .append (separator );
139+ }
140+ }
141+ String mergedString = stringBuilder .toString ();
142+ return mergedString .substring (0 , mergedString .length () - 2 );
143+ }
144+
145+ private static List <Integer > getSquares (List <Integer > numbers ) {
146+ List <Integer > squaresList = new ArrayList <Integer >();
147+
148+ for (Integer number : numbers ) {
149+ Integer square = new Integer (number .intValue () * number .intValue ());
150+
151+ if (!squaresList .contains (square )) {
152+ squaresList .add (square );
153+ }
154+ }
155+ return squaresList ;
156+ }
157+
158+ private static int getMax (List <Integer > numbers ) {
159+ int max = numbers .get (0 );
160+
161+ for (int i = 1 ; i < numbers .size (); i ++) {
162+
163+ Integer number = numbers .get (i );
164+
165+ if (number .intValue () > max ) {
166+ max = number .intValue ();
167+ }
168+ }
169+ return max ;
170+ }
171+
172+ private static int getMin (List <Integer > numbers ) {
173+ int min = numbers .get (0 );
174+
175+ for (int i = 1 ; i < numbers .size (); i ++) {
176+ Integer number = numbers .get (i );
177+
178+ if (number .intValue () < min ) {
179+ min = number .intValue ();
180+ }
181+ }
182+ return min ;
183+ }
184+
185+ private static int getSum (List numbers ) {
186+ int sum = (int ) (numbers .get (0 ));
187+
188+ for (int i = 1 ; i < numbers .size (); i ++) {
189+ sum += (int ) numbers .get (i );
190+ }
191+ return sum ;
192+ }
193+
194+ private static int getAverage (List <Integer > numbers ) {
195+ return getSum (numbers ) / numbers .size ();
196+ }
197+ }
0 commit comments