【问题标题】:Returning object with lowest double field返回具有最低双字段的对象
【发布时间】:2015-07-02 15:48:05
【问题描述】:

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

Link(Airport Airport1, Airport Airport2, double distance)

我有这些 Link 对象的列表,我希望返回距离最短的那个。为了做到这一点,我将如何遍历列表?

我一直在尝试的代码:

double minLinkDistance = 1000;

Link minLink = null

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

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

【问题讨论】:

    标签: java object min


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          你可以有解决办法:

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

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

          【讨论】:

            猜你喜欢
            • 2017-11-24
            • 1970-01-01
            • 1970-01-01
            • 2023-03-24
            • 1970-01-01
            • 2021-07-13
            • 2017-02-11
            • 1970-01-01
            • 2015-06-23
            相关资源
            最近更新 更多