2014-11-02 50 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); 
    } 
} 
相关问题