Skip to content

Commit 96118a9

Browse files
committed
overhaul sort functions
1 parent 8bc2841 commit 96118a9

1 file changed

Lines changed: 25 additions & 6 deletions

File tree

src/main/java/it/aboutbits/springboot/testing/testdata/base/TestDataCreator.java

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)