Comparator
をmin
の中に入れてコレクションのstream
に入れると、それはList<Node>
と言うことにします。通常、私はリストのオブジェクトを互いに比較するだけですが、私の問題はコレクションの外にある<Node>
です。コレクション内のノードの最小値を返す必要があります。親ノード私は基本的に書きたいStreamの外側のオブジェクトによって決定されたストリームの分を返す
public int distanceBetween(Node parent, Node child) { ... }
そして今:
私は外の機能を持つ親ノードに対して、コレクション内のノードを比較Node
public class Node {
private int cost;
private int location;
public int getCost() { return cost }
}
のオブジェクトを持っていますストリーム操作では、値が最も小さいNodeが返されます。そのノードは親の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それでは、2つの要素をお互いに比較するロジックしか提供しませんが、コードは実際には比較を実行しません。あなたが参照している特殊なケースは、そこでは正しく処理されていますが、ストリーム実装クラスにあると考えられるコードによって処理されます。 –