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所说的基础上,看看这个(以防万一),我想我的数学很糟糕,因为我似乎不太懂