gpt4 book ai didi

java - 在由 Stream 外部的对象确定的流上返回 min

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:06:49 24 4
gpt4 key购买 nike

我正在寻找 Comparator写放在里面 minstream在一个集合中,假设它是一个 List<Node> .通常我只是将 List 的对象相互比较,但我的问题是我有一个 <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 被返回。但我不能完全正确配置功能。有任何想法吗?谢谢!

最佳答案

您可以使用 Comparator.comparingInt制作比较器:

Comparator<Node> byDistFromParent = Comparator.comparingInt(n -> distanceBetween(parent, n));

习惯上使用comparingInt的静态导入,所以你的流表达式变成:

return nodeList.stream()
.min(comparingInt(n -> distanceBetween(parent, n));
.orElse(parent);

关于java - 在由 Stream 外部的对象确定的流上返回 min,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42612536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com