Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从给定的浮点值中查找ArrayList中最近的位置_Java_Arraylist - Fatal编程技术网

Java 从给定的浮点值中查找ArrayList中最近的位置

Java 从给定的浮点值中查找ArrayList中最近的位置,java,arraylist,Java,Arraylist,我想知道如何从给定的浮点值中得到最近的位置 我有一个长/长城市列表。我想做的是从给定的坐标中找到最近的城市 public class City { private float lat; private float lng; //getters & setters } List < City > cities; // at this point "cities" contains several "city" Cit

我想知道如何从给定的浮点值中得到最近的位置

我有一个长/长城市列表。我想做的是从给定的坐标中找到最近的城市

public class City {
       private float lat;
       private float lng;
       //getters & setters
   }

   List < City > cities; // at this point "cities" contains several "city"
   City city;



   city = findNearest(lat, lng);
   private City findNearest(float lat, float lng) {
       for (City c: cities) {}
   }
公共级城市{
私人浮动lat;
私人浮式液化天然气;
//接球手和接球手
}
列出<城市>城市;//此时“城市”包含几个“城市”
城市;
城市=最近(纬度,液化天然气);
最近的私人城市(浮动lat、浮动lng){
(城市c:城市){}
}

尝试计算简单偏差:

  private City findNearest(float lat, float lng) {
       float minDist = Float.MAX_VALUE;
       City resCity = null;
       for (City c: cities) {
          float dist = Math.pow(c.getLat() - lat, 2) + Math.pow(c.getLng() - lng, 2);
          if (dist < minDist){
            minDist = dist;
            resCity = c;
          }
       }
     return resCity;
   }
findNearest私人城市(浮动lat、浮动lng){
float minDist=float.MAX_值;
城市撤销=无效;
适用于(城市c:城市){
float dist=Math.pow(c.getLat()-lat,2)+Math.pow(c.getLng()-lng,2);
if(dist

您可以从dist获取Math.sqrt,但实际上没有意义。

只需计算点X和点Y之间的差值,并将最小的差值存储在变量中。使用变量跟踪您认为最接近的变量,并在循环过程中进行更新。对于每个城市,找出距离。如果它比您之前认为最接近的值更接近,请将其指定给变量。另外,不要发布毫无意义的代码片段。你的方法是什么?找到两个地理坐标之间的距离比@KevinEsche提到的要复杂一些,但简单的距离是一个很好的开始。在@khelwood所说的基础上,看看这个(以防万一),我想我的数学很糟糕,因为我似乎不太懂