比方说,我有一个类别为Person
的类age and name
。我想订购一个使用年龄范围的人的列表,例如在名字范围内。
例如,这些范围可以是10年。另一个图形示例:
比较器应返回person 2 > person 1 > person 3 > person 4
。
我尝试过使用Math.abs(p1.age - p2.age)
实现比较器,但是它没有按预期工作。
在这种情况下,如何实现比较器以使用age属性的范围返回比较器?
答案 0 :(得分:1)
您需要将年龄除以10-使用整数除法将只丢弃“ ones”部分,并使您可以轻松比较整数。 Java 8的比较器语法使这一点非常优雅:
List<Person> people = /* initialize the list... */
people.sort(Comparator.comparingInt((Person p) -> p.getAge() / 10)
.thenComparing(Person::getName));