1
1
package java_stream_api ;
2
2
3
+ import java .util .ArrayList ;
3
4
import java .util .Arrays ;
4
5
import java .util .Collections ;
5
6
import java .util .Comparator ;
@@ -76,10 +77,10 @@ public static List<Integer> filterEvenNumbers(List<Integer> intsList) {
76
77
}
77
78
78
79
// 13. Find people older than 18 years and return a list of their names.
79
- public static List <String > namesOfUsersOlderThan18 (List <java_stream_api . User > users ) {
80
+ public static List <String > namesOfUsersOlderThan18 (List <User > users ) {
80
81
return users .stream ()
81
82
.filter (u -> u .getAge () > 18 )
82
- .map (java_stream_api . User ::getName )
83
+ .map (User ::getName )
83
84
.collect (Collectors .toList ());
84
85
}
85
86
@@ -131,15 +132,15 @@ public static Map<String, Integer> stringsToLengthMap(List<String> strList) {
131
132
}
132
133
133
134
// 23. Sort a list of users by their age.
134
- public static List <java_stream_api . User > sortUsersByAge (List <java_stream_api . User > users ) {
135
+ public static List <User > sortUsersByAge (List <User > users ) {
135
136
return users .stream ()
136
- .sorted (Comparator .comparing (java_stream_api . User ::getAge ))
137
+ .sorted (Comparator .comparing (User ::getAge ))
137
138
.collect (Collectors .toList ());
138
139
}
139
140
140
141
// 24. Find the user with the maximum age.
141
- public static Optional <java_stream_api . User > userWithMaxAge (List <java_stream_api . User > users ) {
142
- return users .stream ().max (Comparator .comparing (java_stream_api . User ::getAge ));
142
+ public static Optional <User > userWithMaxAge (List <User > users ) {
143
+ return users .stream ().max (Comparator .comparing (User ::getAge ));
143
144
}
144
145
145
146
// 25. Check if all strings in a list are longer than 3 characters.
@@ -156,7 +157,7 @@ public static List<String> selectEvery3rd(List<String> strList) {
156
157
}
157
158
158
159
// 27. Calculate the total number of hobbies all users have.
159
- public static int totalHobbiesCount (List <java_stream_api . User > users ) {
160
+ public static int totalHobbiesCount (List <User > users ) {
160
161
return users .stream ().mapToInt (u -> u .getHobbies ().size ()).sum ();
161
162
}
162
163
@@ -172,17 +173,15 @@ public static List<String> duplicateStrings(List<String> strList) {
172
173
}
173
174
174
175
// 29. Convert all users' birthdates to string "AGE MM YYYY".
175
- public static List <java_stream_api .User > convertBirthdatesToString (
176
- List <java_stream_api .User > users ) {
176
+ public static List <User > convertBirthdatesToString (List <User > users ) {
177
177
users .forEach (user -> user .setBirthdate (user .getAge () + " MM YYYY" ));
178
178
return users ;
179
179
}
180
180
181
181
// 30. Filter a list of Person objects, keeping only those who live in "City X".
182
- public static List <java_stream_api .Person > filterPersonsByCity (
183
- List <java_stream_api .Person > persons , String city ) {
182
+ public static List <Person > filterPersonsByCity (List <Person > persons , String city ) {
184
183
return persons .stream ()
185
- .filter (p -> "City X" .equals (p .getCity ()))
184
+ .filter (p -> city .equals (p .getCity ()))
186
185
.collect (Collectors .toList ());
187
186
}
188
187
@@ -196,7 +195,7 @@ public static <T> List<T> reverseList(List<T> list) {
196
195
// 32. Find the percentage of elements with the value "null" in a list.
197
196
public static long percentageOfNulls (List <?> list ) {
198
197
long nullCount = list .stream ().filter (Objects ::isNull ).count ();
199
- return list .size () == 0 ? 0 : (nullCount * 100 ) / list .size ();
198
+ return list .isEmpty () ? 0 : (nullCount * 100 ) / list .size ();
200
199
}
201
200
202
201
// 33. Shuffle the elements of a list randomly.
@@ -287,9 +286,8 @@ public static long countNullElements(List<?> list) {
287
286
}
288
287
289
288
// 48. Group users by their year of birth.
290
- public static Map <Integer , List <java_stream_api .User >> groupUsersByBirthYear (
291
- List <java_stream_api .User > users ) {
292
- return users .stream ().collect (Collectors .groupingBy (java_stream_api .User ::getBirthYear ));
289
+ public static Map <Integer , List <User >> groupUsersByBirthYear (List <User > users ) {
290
+ return users .stream ().collect (Collectors .groupingBy (User ::getBirthYear ));
293
291
}
294
292
295
293
// 49. Find all unique characters in a list of strings and form them into a sorted list.
@@ -303,10 +301,89 @@ public static List<Character> uniqueSortedCharacters(List<String> strList) {
303
301
}
304
302
305
303
// 50. Returns a list of user names, sorted by the length of these names.
306
- public static List <String > userNamesSortedByLength (List <java_stream_api . User > users ) {
304
+ public static List <String > userNamesSortedByLength (List <User > users ) {
307
305
return users .stream ()
308
- .map (java_stream_api . User ::getName )
306
+ .map (User ::getName )
309
307
.sorted (Comparator .comparingInt (String ::length ))
310
308
.collect (Collectors .toList ());
311
309
}
310
+
311
+ public static void main (String [] args ) {
312
+ System .out .println ("== Java Stream API Methods Demo ==" );
313
+
314
+ List <String > strList =
315
+ Arrays .asList ("One" , "Two" , "Three" , "Four" , "Five" , "And" , "Again" , "Javaaaa" );
316
+ List <Integer > intsList = Arrays .asList (1 , 2 , 3 , 4 , 5 , 6 , 4 , 2 );
317
+ List <String > moreStrs = Arrays .asList ("Apple" , "Banana" , "Axe" , "cat" );
318
+
319
+ List <User > users =
320
+ Arrays .asList (new User ("Alice" , 25 ), new User ("Bob" , 17 ), new User ("Eve" , 30 ));
321
+ users .get (0 ).getHobbies ().addAll (Arrays .asList ("reading" , "sports" ));
322
+ users .get (2 ).getHobbies ().add ("dancing" );
323
+
324
+ List <Person > persons =
325
+ Arrays .asList (new Person ("Tom" , "City X" ), new Person ("Jane" , "City Y" ));
326
+
327
+ System .out .println ("#1 Elements count: " + findNumberOfElements (strList ));
328
+ System .out .println ("#2 To uppercase: " + convertStringsToUppercase (strList ));
329
+ System .out .println ("#3 Starts with A: " + filterStringsStartingWithA (moreStrs ));
330
+ System .out .println ("#4 Unique ints: " + uniqueIntegers (intsList ));
331
+ System .out .println ("#5 Sum ints: " + sumOfIntegers (intsList ));
332
+ System .out .println ("#6 Min int: " + minOfIntegers (intsList ));
333
+ System .out .println ("#7 Max int: " + maxOfIntegers (intsList ));
334
+ System .out .println ("#8 Join with comma: " + concatenateStringsWithComma (strList ));
335
+ System .out .println ("#9 First int or zero: " + getFirstIntegerOrZero (intsList ));
336
+ System .out .println ("#10 Last string: " + getLastString (strList ));
337
+ System .out .println ("#11 List of squares: " + listOfSquares (intsList ));
338
+ System .out .println ("#12 Even numbers: " + filterEvenNumbers (intsList ));
339
+ System .out .println ("#13 Users > 18: " + namesOfUsersOlderThan18 (users ));
340
+ System .out .println ("#14 Sort by length: " + sortStringsByLength (strList ));
341
+ System .out .println ("#15 Contains 'Java': " + containsStringWithJava (strList ));
342
+ System .out .println ("#16 Merge string lists: " + mergeTwoStringLists (strList , moreStrs ));
343
+ System .out .println ("#17 Average of ints: " + averageOfIntegers (intsList ));
344
+ System .out .println ("#18 Skip 3 ints: " + discardFirstThreeIntegers (intsList ));
345
+ System .out .println ("#19 First 3 ints: " + keepFirstThreeIntegers (intsList ));
346
+ System .out .println ("#20 ASCII codes: " + stringToAsciiCodes (Arrays .asList ("Ab" , "C" )));
347
+ System .out .println ("#21 Count > 5 chars: " + countStringsLongerThan5 (strList ));
348
+ System .out .println ("#22 String->length map: " + stringsToLengthMap (strList ));
349
+ System .out .println ("#23 Users sorted by age: " + sortUsersByAge (users ));
350
+ System .out .println ("#24 User with max age: " + userWithMaxAge (users ).orElse (null ));
351
+ System .out .println ("#25 All >3 length?: " + areAllStringsLongerThan3 (strList ));
352
+ System .out .println ("#26 Every 3rd element: " + selectEvery3rd (strList ));
353
+ System .out .println ("#27 Total hobbies: " + totalHobbiesCount (users ));
354
+ System .out .println (
355
+ "#28 Duplicates: "
356
+ + duplicateStrings (Arrays .asList ("one" , "two" , "two" , "one" , "one" )));
357
+ System .out .println ("#29 Convert birthdates: " + convertBirthdatesToString (users ));
358
+ System .out .println ("#30 In 'City X': " + filterPersonsByCity (persons , "City X" ));
359
+ System .out .println ("#31 Reverse list: " + reverseList (strList ));
360
+ System .out .println (
361
+ "#32 % nulls: " + percentageOfNulls (Arrays .asList ("a" , null , null , "b" )) + "%" );
362
+ List <String > shuffled = new ArrayList <>(strList );
363
+ shuffleList (shuffled );
364
+ System .out .println ("#33 Shuffled: " + shuffled );
365
+ System .out .println ("#34 Group by n%3: " + groupByRemainder3 (intsList ));
366
+ System .out .println ("#35 Even->bool: " + evenIntegersAsBooleans (intsList ));
367
+ System .out .println ("#36 Unique, reversed: " + uniqueElementsReversed (intsList ));
368
+ System .out .println ("#37 Top 5 random: " + top5Of100Random ());
369
+ System .out .println ("#38 Group strings by len: " + groupStringsByLength (strList ));
370
+ System .out .println ("#39 Longest string: " + longestString (strList ));
371
+ System .out .println (
372
+ "#40 Remove names w/ J: "
373
+ + removeUsersWithJ (Arrays .asList ("Jim" , "Bob" , "Jane" , "Alice" )));
374
+ System .out .println ("#41 Int->square map: " + integersToSquareMap (intsList ));
375
+ System .out .println (
376
+ "#42 Total words in sentences: "
377
+ + totalWordsInSentences (Arrays .asList ("Hello world" , "how are you" )));
378
+ System .out .println ("#43 Yes/no even: " + yesNoIfEven (intsList ));
379
+ System .out .println ("#44 Range: " + rangeOfNumbers (intsList ));
380
+ System .out .println ("#45 Lengths desc: " + lengthsDescending (strList ));
381
+ System .out .println ("#46 Sum of string lengths: " + sumStringLengths (strList ));
382
+ System .out .println (
383
+ "#47 Null elements count: " + countNullElements (Arrays .asList (null , "a" , null )));
384
+ System .out .println ("#48 Users by birthyear: " + groupUsersByBirthYear (users ));
385
+ System .out .println (
386
+ "#49 Unique sorted chars: " + uniqueSortedCharacters (Arrays .asList ("cab" , "bad" )));
387
+ System .out .println ("#50 User names by name len: " + userNamesSortedByLength (users ));
388
+ }
312
389
}
0 commit comments