11package java_stream_api ;
22
3+ import java .util .ArrayList ;
34import java .util .Arrays ;
45import java .util .Collections ;
56import java .util .Comparator ;
@@ -76,10 +77,10 @@ public static List<Integer> filterEvenNumbers(List<Integer> intsList) {
7677 }
7778
7879 // 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 ) {
8081 return users .stream ()
8182 .filter (u -> u .getAge () > 18 )
82- .map (java_stream_api . User ::getName )
83+ .map (User ::getName )
8384 .collect (Collectors .toList ());
8485 }
8586
@@ -131,15 +132,15 @@ public static Map<String, Integer> stringsToLengthMap(List<String> strList) {
131132 }
132133
133134 // 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 ) {
135136 return users .stream ()
136- .sorted (Comparator .comparing (java_stream_api . User ::getAge ))
137+ .sorted (Comparator .comparing (User ::getAge ))
137138 .collect (Collectors .toList ());
138139 }
139140
140141 // 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 ));
143144 }
144145
145146 // 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) {
156157 }
157158
158159 // 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 ) {
160161 return users .stream ().mapToInt (u -> u .getHobbies ().size ()).sum ();
161162 }
162163
@@ -172,17 +173,15 @@ public static List<String> duplicateStrings(List<String> strList) {
172173 }
173174
174175 // 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 ) {
177177 users .forEach (user -> user .setBirthdate (user .getAge () + " MM YYYY" ));
178178 return users ;
179179 }
180180
181181 // 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 ) {
184183 return persons .stream ()
185- .filter (p -> "City X" .equals (p .getCity ()))
184+ .filter (p -> city .equals (p .getCity ()))
186185 .collect (Collectors .toList ());
187186 }
188187
@@ -196,7 +195,7 @@ public static <T> List<T> reverseList(List<T> list) {
196195 // 32. Find the percentage of elements with the value "null" in a list.
197196 public static long percentageOfNulls (List <?> list ) {
198197 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 ();
200199 }
201200
202201 // 33. Shuffle the elements of a list randomly.
@@ -287,9 +286,8 @@ public static long countNullElements(List<?> list) {
287286 }
288287
289288 // 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 ));
293291 }
294292
295293 // 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) {
303301 }
304302
305303 // 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 ) {
307305 return users .stream ()
308- .map (java_stream_api . User ::getName )
306+ .map (User ::getName )
309307 .sorted (Comparator .comparingInt (String ::length ))
310308 .collect (Collectors .toList ());
311309 }
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+ }
312389}
0 commit comments