|
package com.company.samples.way4; |
|
|
|
import java.util.*; |
|
import java.util.stream.Collectors; |
|
|
|
/** |
|
* Created by serkan on 28.11.2016. |
|
*/ |
|
public class Main { |
|
public static void main (String[] args) { |
|
|
|
List<Person> roster = new ArrayList<Person> (); |
|
roster.add (new Person ("John", 23, Gender.Male)); |
|
roster.add (new Person ("wayne", 37, Gender.Male)); |
|
roster.add (new Person ("Angelina", 23, Gender.Femal)); |
|
roster.add (new Person ("Jolie", 12, Gender.Femal)); |
|
roster.add (new Person ("Wolverine", 500, Gender.Male)); |
|
roster.add (new Person ("Xavier", 70, Gender.Male)); |
|
roster.add (new Person ("Aişe", 6, Gender.Femal)); |
|
roster.add (new Person ("Aişe", 6, Gender.Femal)); |
|
|
|
Map<Gender, List<Person>> byGender = roster.parallelStream ().collect (Collectors.groupingByConcurrent (Person::getGender)); |
|
System.out.println ("byGender = " + byGender);//this is so cool huh ? |
|
|
|
Double averageAge = roster.parallelStream ().collect (Collectors.averagingInt (Person::getAge)); |
|
System.out.println ("averageAge = " + averageAge); |
|
OptionalDouble anotherAverageAge = roster.parallelStream ().mapToInt (p -> p.getAge ()).average (); |
|
System.out.println ("anotherAverageAge = " + anotherAverageAge); |
|
|
|
List<Person> femalesOnly = roster.parallelStream ().filter (p -> p.getGender () == Gender.Femal).collect (Collectors.toList ()); |
|
System.out.println ("femalesOnly = " + femalesOnly); |
|
|
|
List<Person> distinct = roster.parallelStream ().distinct ().collect (Collectors.toList ()); |
|
System.out.println ("distinct = " + distinct); |
|
|
|
Set<Person> anotherDistinct = roster.parallelStream ().collect (Collectors.toSet ()); |
|
System.out.println ("anotherDistinct = " + anotherDistinct); |
|
|
|
int sumOfAges = roster.parallelStream ().mapToInt (Person::getAge).sum (); |
|
System.out.println ("sumOfAges = " + sumOfAges); |
|
int anotherSumOfAges = roster.parallelStream ().mapToInt (p-> p.getAge ()).sum (); |
|
System.out.println ("anotherSumOfAges = " + anotherSumOfAges); |
|
long justAnotherSumOfAges = roster.parallelStream ().collect (Collectors.summarizingInt (Person::getAge)).getSum (); |
|
System.out.println ("justAnotherSumOfAges = " + justAnotherSumOfAges); |
|
|
|
final Comparator<Person> comp = (p1, p2) -> Integer.compare( p1.getAge(), p2.getAge()); |
|
Person oldest = roster.stream().max(comp).get(); |
|
System.out.println ("oldest = " + oldest); |
|
|
|
Person youngest = roster.stream().min((p1, p2) -> Integer.compare(p1.getAge(), p2.getAge())).get(); |
|
System.out.println ("youngest = " + youngest); |
|
|
|
String lexicalLatests = roster.parallelStream ().max ((p1, p2) -> p1.getName ().compareTo (p2.getName ())).get ().getName (); |
|
System.out.println ("lexicalLatests = " + lexicalLatests); |
|
|
|
} |
|
} |
|
|
|
byGender = {Male=[Person{name='Xavier', age=70, gender=Male}, Person{name='Wolverine', age=500, gender=Male}, Person{name='wayne', age=37, gender=Male}, Person{name='John', age=23, gender=Male}], Femal=[Person{name='Aişe', age=6, gender=Femal}, Person{name='Aişe', age=6, gender=Femal}, Person{name='Angelina', age=23, gender=Femal}, Person{name='Jolie', age=12, gender=Femal}]} |
|
averageAge = 84.625 |
|
anotherAverageAge = OptionalDouble[84.625] |
|
femalesOnly = [Person{name='Angelina', age=23, gender=Femal}, Person{name='Jolie', age=12, gender=Femal}, Person{name='Aişe', age=6, gender=Femal}, Person{name='Aişe', age=6, gender=Femal}] |
|
distinct = [Person{name='John', age=23, gender=Male}, Person{name='wayne', age=37, gender=Male}, Person{name='Angelina', age=23, gender=Femal}, Person{name='Jolie', age=12, gender=Femal}, Person{name='Wolverine', age=500, gender=Male}, Person{name='Xavier', age=70, gender=Male}, Person{name='Aişe', age=6, gender=Femal}] |
|
anotherDistinct = [Person{name='John', age=23, gender=Male}, Person{name='wayne', age=37, gender=Male}, Person{name='Wolverine', age=500, gender=Male}, Person{name='Xavier', age=70, gender=Male}, Person{name='Angelina', age=23, gender=Femal}, Person{name='Jolie', age=12, gender=Femal}, Person{name='Aişe', age=6, gender=Femal}] |
|
sumOfAges = 677 |
|
anotherSumOfAges = 677 |
|
justAnotherSumOfAges = 677 |
|
oldest = Person{name='Wolverine', age=500, gender=Male} |
|
youngest = Person{name='Aişe', age=6, gender=Femal} |
|
lexicalLatests = wayne |
|
|