Если вы намерены сделать это, используя только lambdas
, тогда это будет работать как с lists
, так и с arrays
. Это предполагает, что ваши поля group
и age
являются целыми.
Comparator<Item> comp = (o1, o2) -> {
int cmp = Integer.compare(o1.getGroup(), o2.getGroup());
cmp = cmp == 0 ? Integer.compare(o1.getAge(), o2.getAge()) : cmp;
cmp = cmp == 0 ? o1.getName().compareTo(o2.getName()) : cmp;
return cmp;
};
list.sort(comp);
Arrays.sort(items, comp);
Но я бы использовал List
и сделал бы это следующим образом:
list.sort(Comparator.comparing(Item::getGroup)
.thenComparing(Item::getAge)
.thenComparing(Item::getName));
И даже ваше lambda
выражение является comparator
. Вы не можете сравнить без какого-либо Comparator
независимо от того, как вы его построили.