返回具有最低双精度字段的对象



我有一个对象链接,它采用以下参数:

链接(机场机场1,机场

机场2,双距离)

我有一个这些链接对象的列表,我希望返回距离最小的对象。我将如何循环访问列表才能执行此操作?

我一直在尝试的代码:

double minLinkDistance = 1000;
Link minLink = null
for(Link l : links) {
    if(minLinkDistance > l.getDistance()) {
        minLinkDistance = l.getDistance();
        minLink = l;
        }
    }

但是我不想自己设置界限(即距离 1000),我将如何解决这个问题?

您可以依靠最初未设置minLink的事实。请注意,如果您需要做的就是找到具有最小距离的链接,则无需存储minLinkDistance值:

Link minLink = null;
for(Link l : links) {
    if (minLink == null || l.getDistance() < minLink.getDistance()) {
        minLink = l;
    }
}

您可以初始化到列表第一个元素的最小链接和最小距离:

double minLinkDistance = links.get(0).getDistance();
Link minLink = links.get(0);

将 1000 替换为 Double.MAX_VALUE 。在经过您的距离时,这应该确保该距离将替换为您当前拥有的距离。

您可以解决:

1) 将 1000 替换为 Double.MAX_VALUE

2) 将 for 循环替换为以下内容:

for (int i = 0; i < links.size(); i++) {
    Link l = links.get(i);
    if (i == 0 || minLinkDistance > l.getDistance()) {
        minLinkDistance = l.getDistance();
        minLink = l;
    }
}

在第二个解决方案中,您将测试第一个元素并将其作为当前最小距离,因为它是第一个元素。

最新更新