【发布时间】:2015-03-05 21:04:42
【问题描述】:
我想创建一个真实的地图,我可以在其中找到我所在地区的加油站。
我已经开始创建一个 HashMap:
key => 坐标
价值 => 酒店
HashMap<Coordinates, Hotel> m = HashMap<Coordinates, Hotel>();
这是课程:
public class Coordinates {
private double lng;
private double lat;
public Coordinates(double x, double y) {
lat = x;
lng = y;
}
public double getLng() {
return lng;
}
public double getLat() {
return lat;
}
public void setLat(double l) {
lat = l;
}
public void setLng(double l) {
lng = l;
}
public boolean equals(Coordinates other) {
return ( (lng == other.getLng()) && (lat == other.getLat()) );
}
public int hashCode() {
int lng2 = (int) (this.lng * 100000);
int lat2 = (int) (this.lat * 100000);
//Use a prime number for security
return 31 * (lng2 + lat2);
}
}
public class Hotels {
public class Info {
public String text;
public Info(String t) {
text = t;
}
}
private Coordinates coords;
private Info description;
public Hotel(double lat, double lng, String text) {
this.coords = new Coordinates(lat, lng);
this.description = new Info(text);
}
public Coordinates getCoords() {
return coords;
}
public Info getInfo() {
return description;
}
public String getDescription() {
return description.text;
}
}
我自己提出的挑战(不是作业)是创建一个函数,当调用它时,它会返回您声明的半径范围内的所有酒店:
public Iterable<Hotel> search(double lat, double lng, double radius) {
//Code Here
}
显然,如果我想使用 HashMap,我不想迭代所有酒店。 我想在函数中拥有最好的复杂度。
编辑: 这是一张地图xD
【问题讨论】:
-
什么是“真实”地图?
HashMap是真的,不是幻觉。 -
我的意思是像路线图这样的地图
-
使用
HashMap,您将遇到问题。如果不查看每个坐标,就无法消除坐标。TreeMap<Double, TreeMap<Double, Hotel>>,虽然...? -
请用该数据结构提出答案:)
-
有实际的 GIS(地理信息系统)数据结构可以解决这个问题。 HashMap,尽管有这个名字,但不是解决这个问题的正确结构。
标签: java dictionary data-structures hashmap