字符串格式我要排序的浮点值,其是在如字符串格式提供的名单列表,排序花车/双,它们与Comparator.comparing
"rate": "429.0",
"rate": "129.0",
"rate": "1129.0",...
如果我使用Comparator.comparing (Room :: getRate),该列表将按字符串顺序排序,这将是不正确的。所以我写了下面的代码,我将String转换为float,然后进行比较。
下面的代码适合我,但它看起来很难看,有没有更好的选择?
stream().sorted(Comparator.comparing(Room::getRate,
(s1, s2) -> (Float.parseFloat(s1) > Float.parseFloat(s2) ? 1 :-1)))
.collect(Collectors.toList());
你可以写一个专用的比较器类,并使用它,以便排序。唯一的区别是您将在overriden方法中使用比较器类和排序逻辑。 – Jimmy
是的意识到这一点,但因为这是一个普遍的问题,希望有人可能有一个更简单和更好的解决方案。 – Abhi