@@ -30,14 +30,33 @@ public List<ITEM> returnAll() {
3030 return create ();
3131 }
3232
33- public List <ITEM > returnSorted (@ NonNull Comparator <ITEM > comparator ) {
34- return returnAll ().stream ().sorted (comparator ).toList ();
33+ @ SafeVarargs
34+ public final List <ITEM > returnSorted (@ NonNull Comparator <ITEM >... comparators ) {
35+ if (comparators .length == 0 ) {
36+ throw new IllegalArgumentException ("At least one comparator must be provided" );
37+ }
38+
39+ var combinedComparator = comparators [0 ];
40+ for (var i = 1 ; i < comparators .length ; i ++) {
41+ combinedComparator = combinedComparator .thenComparing (comparators [i ]);
42+ }
43+
44+ return returnAll ().stream ().sorted (combinedComparator ).toList ();
3545 }
3646
37- public <U extends Comparable <? super U >> List <ITEM > returnSorted (@ NonNull Function <ITEM , U > comparator ) {
38- return returnAll ().stream ()
39- .sorted (Comparator .comparing (comparator ))
40- .toList ();
47+ @ SafeVarargs
48+ @ SuppressWarnings ("unchecked" )
49+ public final <U extends Comparable <? super U >> List <ITEM > returnSorted (@ NonNull Function <ITEM , ? extends Comparable <?>>... comparators ) {
50+ if (comparators .length == 0 ) {
51+ throw new IllegalArgumentException ("At least one comparator must be provided" );
52+ }
53+
54+ var combinedComparator = Comparator .comparing ((Function <ITEM , U >) comparators [0 ]);
55+ for (var i = 1 ; i < comparators .length ; i ++) {
56+ combinedComparator = combinedComparator .thenComparing ((Function <ITEM , U >) comparators [i ]);
57+ }
58+
59+ return returnAll ().stream ().sorted (combinedComparator ).toList ();
4160 }
4261
4362 public Set <ITEM > returnSet () {
0 commit comments