我有一个存储HashMap的TreeMap。我觉得我应该能够找到这个,但我似乎无法在Google上找到它。
我有一个存储在其中的HashMap的TreeMap,我会这样迭代:
while (i.hasNext()) {
Map.Entry me = (Map.Entry) i.next();
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
}
这将打印输出(示例行):
I / System.out:32: {walking = 32,pic = http://****/images/walkers/chase.png,name = Chase,dist = 6096.8589024135445}
我想知道如何从这个HashMap中抓取pic,name,dist。
编辑:我不明白人们错过了哪一点。我把一个HashMap放到了TreeMap中。 TreeMap内部是一个HashMap。我想我可以告诉你什么是HashMap,但你们已经知道了!
TreeMap dist_mp=new TreeMap();
Map<String, String> mp1 = new HashMap<String,String>();
mp1.put("dist", distanceInMiles + "");
mp1.put("name", obj.getString("first_name"));
mp1.put("pic", obj.getString("pic"));
mp1.put("walks", obj.getString("walks"));
dist_mp.put(distanceInMiles, mp1);
答案 0 :(得分:2)
您需要的只是将TreeMap
值转换为Map
:
while (i.hasNext()) {
Map.Entry me = (Map.Entry) i.next();
System.out.print(me.getKey() + ": ");
// Cast to a Map again
Map<String, String> mp = (Map<String, String>) me.getValue();
// get() works now
System.out.print("name = " + mp.get("name"));
System.out.print("pic = " + mp.get("pic"));
System.out.println("dist = " + mp.get("dist"));
}
答案 1 :(得分:1)
需要迭代两次,一次针对TreeMap
,然后针对HashMap
public static void main(String[] args) {
TreeMap<String, Map<String, String>> dist_mp = new TreeMap<String, Map<String, String>>();
Map<String, String> mp1 = new HashMap<String, String>();
mp1.put("dist", "6096.8589024135445");
mp1.put("name", "Chase");
mp1.put("pic", "http://****/images/walkers/chase.png");
mp1.put("walks", "32");
dist_mp.put("32", mp1);
for (Map.Entry<String, Map<String, String>> entry : dist_mp.entrySet()) {
String key = entry.getKey();
System.out.println(key);
Map<String, String> myMap = entry.getValue();
for (Map.Entry<String, String> entry1 : myMap.entrySet()) {
System.out.println(entry1.getKey() + " => " + entry1.getValue());
}
}
}
<强>输出强>
32
walks => 32
name => Chase
pic => http://****/images/walkers/chase.png
dist => 6096.8589024135445
答案 2 :(得分:0)
你的HashMap似乎持有某个类的对象,如下所示:
{walks=32, pic=http://****/images/walkers/chase.png, name=Chase, dist=6096.8589024135445}
识别类,如果getter方法可用于pic,name,dist,则使用它们。
答案 3 :(得分:0)
我认为你只是想知道如何获得与密钥相关的值:
map.get("pic");
答案 4 :(得分:-1)
您需要me.getValue().get("pic")
,me.getValue().get("name")
和me.getValue().get("dist")
。
这假定您使用的是泛型,TreeMap
被声明为Map<Integer, HashMap<String, String>>
,并且您迭代的Map.Entry
被声明为Map.Entry<Integer, HashMap<String, String>>
。
此外,您可以使用for-each循环更轻松地进行迭代。
Map<Integer, HashMap<String, String>> theTreeMap = new TreeMap<>();
// Populate the map here.
for (Map.Entry<Integer, HashMap<String, String>> me : theTreeMap.entrySet()) {
System.out.println(me.getValue().get("pic"));
System.out.println(me.getValue().get("name"));
System.out.println(me.getValue().get("dist"));
}