将 Java 8 Lambda 函数转换为 Java 7
Convert Java 8 Lambda Function to Java 7
嘿,我是编码新手,我已经掌握了 Java 8 的 Lambda 函数,但我正在尝试将我编写的一些代码转换为 Java 7对于学校的一个项目,我不知道如何使这段代码在功能上相同,但在 java 7 中。抱歉,如果这是一个愚蠢的问题,但我似乎无法弄清楚.我是否编写自定义方法,然后将其应用于我的 PriorityQueue。
open = new PriorityQueue<>((Object o1, Object o2) -> {
Cell c1 = (Cell)o1;
Cell c2 = (Cell)o2;
return c1.endCost<c2.endCost?-1:
c1.endCost>c2.endCost?1:0;
});
这里尝试使用匿名Comparator
class:
open = new PriorityQueue<Cell>(new Comparator<Cell>() {
@Override
public int compare(Cell o1, Cell o2) {
return c1.endCost < c2.endCost ? -1 :
c1.endCost > c2.endCost ? 1 : 0;
}
});
您可以在 Intellij Idea 中自动执行此操作。将光标放在 ->
上并按 Alt+Enter:
使用 Eclipse(我不知道任何其他 IDE),您可以使用 Ctrl+1[= 自动完成此操作17=] -> 转换成匿名class创建
在你的例子中,它是一个比较器:
new Compator<>() {
public int compare(Object o1, Object o2) {
...
}
}
嘿,我是编码新手,我已经掌握了 Java 8 的 Lambda 函数,但我正在尝试将我编写的一些代码转换为 Java 7对于学校的一个项目,我不知道如何使这段代码在功能上相同,但在 java 7 中。抱歉,如果这是一个愚蠢的问题,但我似乎无法弄清楚.我是否编写自定义方法,然后将其应用于我的 PriorityQueue。
open = new PriorityQueue<>((Object o1, Object o2) -> {
Cell c1 = (Cell)o1;
Cell c2 = (Cell)o2;
return c1.endCost<c2.endCost?-1:
c1.endCost>c2.endCost?1:0;
});
这里尝试使用匿名Comparator
class:
open = new PriorityQueue<Cell>(new Comparator<Cell>() {
@Override
public int compare(Cell o1, Cell o2) {
return c1.endCost < c2.endCost ? -1 :
c1.endCost > c2.endCost ? 1 : 0;
}
});
您可以在 Intellij Idea 中自动执行此操作。将光标放在 ->
上并按 Alt+Enter:
使用 Eclipse(我不知道任何其他 IDE),您可以使用 Ctrl+1[= 自动完成此操作17=] -> 转换成匿名class创建
在你的例子中,它是一个比较器:
new Compator<>() {
public int compare(Object o1, Object o2) {
...
}
}