2014-02-07 102 views
-2
import java.util.HashMap; 
import java.util.HashSet; 
import java.util.Iterator; 
import java.util.Set; 

public class MyClass { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     HashMap<Integer, String> hm = new HashMap<Integer, String>(); 
     hm.put(1, "Anil"); 
     hm.put(2, "Deven"); 
     hm.put(3, "sanjay"); 
     hm.put(4, "sanjay"); 
     hm.put(5, "Raj"); 
     hm.put(6, "sanjay"); 

     Set<Integer> keys = hm.keySet(); 

    } 

} 

這是我的代碼,我想刪除從哈希圖中的所有重複的值,並希望打印控制檯,請告訴我,我怎麼會做這種刪除重複值。如何從哈希表

+1

你嘗試過什麼嗎? – 2014-02-07 10:52:09

+5

你如何決定哪些密鑰對需要保存,哪些需要作爲重複刪除? – SudoRahul

+0

看到我剛剛通過在Arraylist古德爾我能夠刪除重複,但我只是想了解我將如何從hasmap中刪除? – user3283502

回答

2

您的HashMap是hm。將hm的值放入另一個HashMap hm2中,其中hm的值是hm2的鍵,而hm2的值可以是任何值(例如對象Boolean.TRUE)。

然後循環遍歷第二個HashMap hm2並打印出它的關鍵字。

而不是HashMap你也可以使用HashSethm2(這更好,因爲你不需要布爾。實踐部分)。

import java.util.HashMap; 
import java.util.HashSet; 

public class MyClass { 

    public static void main(String[] args) { 

     HashMap<Integer, String> hm = new HashMap<Integer, String>(); 
     hm.put(1, "Anil"); 
     hm.put(2, "Deven"); 
     hm.put(3, "sanjay"); 
     hm.put(4, "sanjay"); 
     hm.put(5, "Raj"); 
     hm.put(6, "sanjay"); 

     HashSet<String> hm2 = new HashSet<String>(); 
     hm2.addAll(hm.values()); 

     for (String str : hm2){ 
      System.out.println(str); 
     } 
    } 

} 
+0

plz適用於給定我的例子coz在數組列表中能夠刪除重複但不理解Hasmap? – user3283502

+0

這是你的例子。答案已更新。 –

2

這是不可能的,以保持與映射,如果你想重複值被淘汰,與重複值相關聯的唯一的密鑰也將被從地圖上下車的密鑰一起。

如果您只是需要從地圖唯一值的列表,試試這個:

試試這個:

Set<String> set = new HashSet<String>(hm.values()); 
    System.out.println(set); 

輸出:阿尼爾,戴文,拉吉,桑傑]

+0

你們都是對的Thanx buddy – user3283502

+0

@ user3283502:如果它對你有幫助,請接受答案。檢查此鏈接:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

2

將圖翻轉兩次

import java.util.HashMap; 
import java.util.Map; 
import java.util.Map.Entry; 

public class UniqueMapValues 
{ 
    public static void main(String[] args) 
    { 
     Map<Integer, String> hm = new HashMap<Integer, String>(); 
     hm.put(1, "Anil"); 
     hm.put(2, "Deven"); 
     hm.put(3, "sanjay"); 
     hm.put(4, "sanjay"); 
     hm.put(5, "Raj"); 
     hm.put(6, "sanjay"); 

     hm = invert(invert(hm)); 

     System.out.println(hm); 
    } 

    private static <K, V> Map<V, K> invert(Map<K, V> map) 
    { 
     Map<V, K> result = new HashMap<V, K>(); 
     for (Entry<K, V> entry : map.entrySet()) 
     { 
      result.put(entry.getValue(), entry.getKey()); 
     } 
     return result; 
    } 

} 
+0

Thanx其工作正常 – user3283502