2017-04-04 48 views
0
I have this code here : 
public static void exercise5e() { 
    List<Hills> hillist = Hills.readHills(); 

公共靜態地圖> hillsByCounty(名單丘陵){我如何從HashMap中提取和打印特定值?

HashMap<String, Set<Hills>> hashMap = new HashMap<String, Set<Hills>>(); 
    // List<Hills> hillist = Hills.readHills(); 

    for (Hills h : hillist) { 
     String key = h.countryname; 

     } else { 
      Set<Hills> set = new TreeSet<Hills>(); 
      set.add(h); 
      hashMap.put(key, set); 

     } 

    } 





    System.out.println(hashMap1); 
    return hashMap1; 
} 

}但是我只需要打印 我的HashMap具有(山名,國名,高度,經度和緯度從列表中的值3個縣,每個縣的前3個丘陵和他們的身高我該怎麼辦呢?enter image description here

+0

可能重複[Java Hashmap:如何從值中獲取密鑰?](http://stackoverflow.com/questions/1383797/java-hashmap-how-to-get-key-from-value) – Fizz

回答

0

這就是你的方法應該是什麼樣子等。我認爲這是最好的一個不實際的代碼可以做。

List<Hills> hillist = Hills.readHills(); 
    Map<String, Set<Hills>> hillsByCounty = Hills.hillsByCounty(hillist); 

    Set<Map.Entry<String, Set<Hills>>> entrySet = hashMap.entrySet(); 
    Iterator<Map.Entry<String, Set<Hills>>> entryIterator = entry1.iterator(); 
    for(int i = 0; i < 3; i++){ 
      Map.Entry<String, Set<Hills>> mapEntry = entryIterator.next(); 
      System.out.println("### County: " + mapEntry.getKey()); 
      Set<Hills> hills = mapEntry.getValue(); 
      for (int j = 0; j < 3; j++) {  
        Hill hill = iterator.next(); 
        System.out.println(hill.hillName + " " + hill.height); 
       } 
      } 
     } 
    } 

變化hill.hillNamehill.height到任何的山名和山高度變量名。

+0

應該中斷因爲OP想要打印3個縣,所以在3個縣之後。 – Crocode

+0

說實話,是的,它是工作,但並沒有打破3縣,它將一直持續到整個列表的末尾 – Fizz

+0

最簡單的解決方案:添加計數器,然後在每個迭代器增加它並檢查它是否= 3。我編輯了我的答案 – Cargeh