我有一个对象链接,它采用以下参数:
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)我该如何解决?
答案 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
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;
}
}
在第二个解决方案中,您将测试第一个元素并将其作为当前最小距离,因为它是第一个元素。