那如果只提{ if (s1.equals(s2)) { return 0; } else if (s1 == 1 || s2 == 5) { return -1; } else if (s1 == 5 || s2 == 1) { return 1; } else if (s1 == 2) { return -1; } else if (s2 == 2) { return 1; } else if (s1 == 0) { return -1; } else { return 1; } }
时间: 2024-02-10 11:18:16 浏览: 60
详解hashCode()和equals()的本质区别和联系
如果只提这个匿名函数,可以将其提取为一个具名方法,例如:
private int getingStateComparison(int s1, int s2) {
if (s1 == s2) {
return 0;
} else if (s1 == 1 || s2 == 5) {
return -1;
} else if (s1 == 5 || s2 == 1) {
return 1;
} else if (s1 == 2) {
return -1;
} else if (s2 == 2) {
return 1;
} else if (s1 == 0) {
return -1;
} else {
return 1;
}
}
然后在排序时,就可以使用该方法作为Comparator的比较函数,例如:
Comparator<GoodsEnjoy> comparator = Comparator.comparingInt(GoodsEnjoy::getGroundingState)
.thenComparing((s1, s2) -> getGroundingStateComparison(s1, s2));
enjoys.stream().sorted(comparator).findFirst().orElse(null);
这样就能将匿名函数提取为具名方法,并使用它来创建Comparator了。
阅读全文