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

时间:2015-04-24 06:59:02

标签: java object min

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

Link(Airport Airport1,Airport Airport2,双倍距离)

我有一个这些Link对象的列表,我希望返回距离最短的对象。我如何迭代列表才能做到这一点?

我一直在尝试的代码:

double minLinkDistance = 1000;

Link minLink = null

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

但是我不想自己设定界限(即距离为1000)我该如何解决?

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

您可以将minLink和min距离初始化为列表的第一个元素:

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

Link minLink = links.get(0);

答案 2 :(得分:0)

将1000替换为Double.MAX_VALUE。当你经过你的距离时,这应该确保距离将被你现有的距离取代。

答案 3 :(得分:0)

您可以使用解决方案:

1)用Double.MAX_VALUE

替换1000

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;
    }
}

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