2014-11-02 53 views
1

我有測試類,它包含屬性名稱和工資,現在我想添加測試類多次的同一對象作爲鍵在地圖中。 如何實現? 不希望使用多重映射在地圖中添加多次KEY的相同對象

import java.util.HashMap; 
import java.util.Hashtable; 
import java.util.Map; 


public class InitialPage { 

    private String name; 
    private double salary; 

    public InitialPage(String name,double salary) 
    { 
     this.name=name; 
     this.salary=salary; 
    } 

    public static void main(String[] args) { 

     InitialPage s3 =new InitialPage("Nitesh",23889371); 
     InitialPage s1 =new InitialPage("bagri",23889371); 
     InitialPage s2 =new InitialPage("Nitesssh",23889371); 


    HashMap<InitialPage, String> map1=new HashMap<InitialPage,String>(); 
     map1.put(s1, "nit"); 
     map1.put(s2, "nits"); 
     map1.put(s1, "nite"); 
     map1.put(s1, "anite"); 

     System.out.println("size "+map1.size()); 
     System.out.println(map1.get(s1)); 
    } 

} 

而且它顯示大小2只和相同的密鑰將覆蓋VALUE(鍵值)的值。

+1

你在等什麼?你有沒有探索過任何東西,爲什麼你不想使用MultiMap?你有沒有寫過任何代碼等? – SMA 2014-11-02 14:26:49

+0

是的這個功能很容易通過Multimap實現,但問題是與multimap是我需要添加谷歌圖書館。 – 2014-11-02 14:28:04

回答

0

改爲使用Map<TestClass, List<ValueClass>>

下面是關於如何將您自己的multimap作爲Map的包裝的基本示例。

public class BasicMultiMap<K, V> { 
    private Map<K, List<V>> map = new HashMap<>(); 
    public void put(K key, V value) { 
     List<V> list = map.get(key); 
     if (list == null) { 
      list = new ArrayList<>(); 
      map.put(key, list); 
     } 
     list.add(value); 
    } 
    public List<V> get(K key) { 
     return map.get(key); 
    } 
} 
相關問題