11package org .baeldung .java8 ;
22
3+ import static org .baeldung .java8 .entity .Human .compareByNameThenAge ;
34import static org .hamcrest .Matchers .equalTo ;
45
56import java .util .Collections ;
7+ import java .util .Comparator ;
68import java .util .List ;
79
810import org .baeldung .java8 .entity .Human ;
@@ -16,18 +18,81 @@ public class Java8SortUnitTest {
1618
1719 // tests -
1820
21+ @ Test
22+ public final void givenPreLambda_whenSortingEntitiesByName_thenCorrectlySorted () {
23+ final List <Human > humans = Lists .newArrayList (new Human ("Sarah" , 10 ), new Human ("Jack" , 12 ));
24+ Collections .sort (humans , new Comparator <Human >() {
25+ @ Override
26+ public final int compare (final Human h1 , final Human h2 ) {
27+ return h1 .getName ().compareTo (h2 .getName ());
28+ }
29+ });
30+ Assert .assertThat (humans .get (0 ), equalTo (new Human ("Jack" , 12 )));
31+ }
32+
1933 @ Test
2034 public final void whenSortingEntitiesByName_thenCorrectlySorted () {
2135 final List <Human > humans = Lists .newArrayList (new Human ("Sarah" , 10 ), new Human ("Jack" , 12 ));
2236 Collections .sort (humans , (final Human h1 , final Human h2 ) -> h1 .getName ().compareTo (h2 .getName ()));
2337 Assert .assertThat (humans .get (0 ), equalTo (new Human ("Jack" , 12 )));
2438 }
2539
40+ @ Test
41+ public final void givenLambdaShortForm_whenSortingEntitiesByName_thenCorrectlySorted () {
42+ final List <Human > humans = Lists .newArrayList (new Human ("Sarah" , 10 ), new Human ("Jack" , 12 ));
43+ Collections .sort (humans , (h1 , h2 ) -> h1 .getName ().compareTo (h2 .getName ()));
44+ Assert .assertThat (humans .get (0 ), equalTo (new Human ("Jack" , 12 )));
45+ }
46+
47+ @ Test
48+ public final void whenSortingEntitiesByNameThenAge_thenCorrectlySorted () {
49+ final List <Human > humans = Lists .newArrayList (new Human ("Sarah" , 12 ), new Human ("Sarah" , 10 ), new Human ("Zack" , 12 ));
50+ Collections .sort (humans , (lhs , rhs ) -> {
51+ if (lhs .getName ().equals (rhs .getName ())) {
52+ return lhs .getAge () - rhs .getAge ();
53+ } else {
54+ return lhs .getName ().compareTo (rhs .getName ());
55+ }
56+ });
57+ Assert .assertThat (humans .get (0 ), equalTo (new Human ("Sarah" , 10 )));
58+ }
59+
60+ @ Test
61+ public final void givenComposition_whenSortingEntitiesByNameThenAge_thenCorrectlySorted () {
62+ final List <Human > humans = Lists .newArrayList (new Human ("Sarah" , 12 ), new Human ("Sarah" , 10 ), new Human ("Zack" , 12 ));
63+ final Comparator <Human > byName = (h1 , h2 ) -> h1 .getName ().compareTo (h2 .getName ());
64+ final Comparator <Human > byAge = (h1 , h2 ) -> Ints .compare (h1 .getAge (), h2 .getAge ());
65+ Collections .sort (humans , byName .thenComparing (byAge ));
66+ Assert .assertThat (humans .get (0 ), equalTo (new Human ("Sarah" , 10 )));
67+ }
68+
2669 @ Test
2770 public final void whenSortingEntitiesByAge_thenCorrectlySorted () {
2871 final List <Human > humans = Lists .newArrayList (new Human ("Sarah" , 10 ), new Human ("Jack" , 12 ));
29- Collections .sort (humans , (final Human h1 , final Human h2 ) -> Ints .compare (h1 .getAge (), h2 .getAge ()));
72+ Collections .sort (humans , (h1 , h2 ) -> Ints .compare (h1 .getAge (), h2 .getAge ()));
73+ Assert .assertThat (humans .get (0 ), equalTo (new Human ("Sarah" , 10 )));
74+ }
75+
76+ @ Test
77+ public final void whenSortingEntitiesByNameReversed_thenCorrectlySorted () {
78+ final List <Human > humans = Lists .newArrayList (new Human ("Sarah" , 10 ), new Human ("Jack" , 12 ));
79+ final Comparator <Human > comparator = (h1 , h2 ) -> h1 .getName ().compareTo (h2 .getName ());
80+ Collections .sort (humans , comparator .reversed ());
3081 Assert .assertThat (humans .get (0 ), equalTo (new Human ("Sarah" , 10 )));
3182 }
3283
84+ @ Test
85+ public final void givenMethodDefinition_whenSortingEntitiesByNameThenAge_thenCorrectlySorted () {
86+ final List <Human > humans = Lists .newArrayList (new Human ("Sarah" , 10 ), new Human ("Jack" , 12 ));
87+ Collections .sort (humans , Human ::compareByNameThenAge );
88+ Assert .assertThat (humans .get (0 ), equalTo (new Human ("Jack" , 12 )));
89+ }
90+
91+ @ Test
92+ public final void givenInstanceMethod_whenSortingEntitiesByName_thenCorrectlySorted () {
93+ final List <Human > humans = Lists .newArrayList (new Human ("Sarah" , 10 ), new Human ("Jack" , 12 ));
94+ Collections .sort (humans , Comparator .comparing (Human ::getName ));
95+ Assert .assertThat (humans .get (0 ), equalTo (new Human ("Jack" , 12 )));
96+ }
97+
3398}
0 commit comments