重构lamda表达式以使用Comparator.comparingDouble

时间:2019-02-18 11:31:06

标签: java intellij-idea lambda

我有以下lamda表达式。我的IDE(明智的想法)告诉我,应该将其替换为Comparator.comparingDouble,但我找不到解决方法。

List<javafx.stage.Screen> screenList = screens;

screenList.sort((screenA, screenB) -> Double.compare(
               screenA.getBounds().getMinX(), screenB.getBounds().getMinX()));

是否可以通过

完成此操作
screenList.sort(Comparator.comparingDouble(...));

或者这是intellij的错误注释吗?预先感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

您只需要一个将Screen转换为double的函数:

screenList.sort(Comparator.comparingDouble(screen -> screen.getBounds().getMinX()));

答案 1 :(得分:1)

在Intellij IDEA中,您只需要调用比较(按Alt + Enter)并在建议用Comparator替换时单击Enter。比较两次,IDEA会执行自动替换。

screenList.sort((screenA, screenB) -> Double.com<ALTENTER_HERE>pare(
            screenA.getBounds().getMinX(), screenB.getBounds().getMinX()));

代码将替换为:

 screenList.sort(Comparator.comparingDouble(screenA -> screenA.getBounds().getMinX()));