我有一个代码,它将对象作为hashmap值。我想使用迭代器类从hashmap中读取lat和lng。但我不知道该怎么做。我的代码也是。
Location locobj = new Location();
HashMap loc = new HashMap();
while(rs.next()){
locobj.setLat(lat);
locobj.setLng(lon);
loc.put(location, locobj);
}
Set set = loc.entrySet();
Iterator i = set.iterator();
while(i.hasNext()) {
Map.Entry me = (Map.Entry)i.next();
System.out.println(me.getKey()+"value>>"+me.getValue());
}
班级位置就像这样
public class Location {
private String lat;
private String lng;
private String name;
public String getLat() {
return lat;
}
public void setLat(String lat) {
this.lat = lat;
}
public String getLng() {
return lng;
}
public void setLng(String lng) {
this.lng = lng;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
如何从getValue()方法中读取locobj lat和lng值。请帮助
答案 0 :(得分:5)
你应该在这里使用泛型。 将地图声明为
Map<String, Location> locationMap = new HashMap<>() // assuming your key is of string type
这样,您可以避免类型转换(应避免使用RTTI - 设计原则之一)
Location locobj = me.getValue()
locobj.getLat() // will give you latitude
locobj.getLng() // will give you longitude
答案 1 :(得分:3)
为什么不直接施放价值?
Location locobj = (Location)me.getValue();
locobj.getLat();
locobj.getLng();
答案 2 :(得分:1)
更改您的代码以使用Generics。
而不是
Location locobj = new Location();
Map<Location> loc = new HashMap<Location>(); // code to interfaces, and use Generics
DO
Location locobj = new Location();
HashMap<String,Location> loc = new HashMap<String,Location>();
和您的参赛作品
Map.Entry<String,Location> me = (Map.Entry)i.next();
然后你不必投任何东西
答案 3 :(得分:0)
getValue()返回对Object的引用,但实际上object是Location。所以你需要执行转换,请参阅@DataNucleus的答案,但你甚至可以这样做:
System.out.println(me.getKey()+"value>>"+((Location)me.getValue()).getLng());
答案 4 :(得分:0)
您正在使用getKey()或getValue()检索Object。您现在需要调用getter方法来打印适当的值。
答案 5 :(得分:0)
可以使用以下内容:
for (Entry entry : map.entrySet()) {
String key = entry.getKey();
Object values = (Object) entry.getValue();
System.out.println("Key = " + key);
System.out.println("Values = " + values + "n");
}