我正在寻找Comparator
来写入min
的stream
集合中,我们只是假设它是List<Node>
。通常我只是比较列表中的对象,但我的问题是我有一个<Node>
这是在集合之外,我需要返回集合中的节点的最小值,因为它们是对齐的父节点。返回分辨率由流对象确定的流
我有Node
public class Node {
private int cost;
private int location;
public int getCost() { return cost }
}
对象我对与外部功能的父节点集合中的比较节点:
public int distanceBetween(Node parent, Node child) { ... }
现在我想基本上写流操作返回节点的最低值,因为它与其父母Node
相比较,但不在集合中。喜欢的东西:
private Node returnOpenNodeWithLowestFCost(Node parent) {
return nodeList.stream()
.min((n1 , n2) -> ???);
.getOrElse(parent);
}
nodeList
不含parent
,并且是List<Node>
在包含区域???是我将每个N发送给其父母进行评估的地方。所以,如果调用
distanceBetween(parent, n1) > distanceBetween(parent, n2)
,它会导致返回n1。但我无法正确配置该功能。有任何想法吗?谢谢!
谢谢。到目前为止都是正确的,但我选择你的答案的清晰度。后续问题,如果我的'nodeList'只包含1个项目会发生什么,如果期望始终比较'nodeList'中的至少2个不同的值,'min()'方法会有问题吗? – NateH06
@ NateH06没有问题,你只提供逻辑来比较两个元素,但你的代码实际上并没有执行任何比较。你提到的特殊情况是在那里正确处理的,我想通过我认为是在流实现类中的代码。 –