简体   繁体   English

在地图中多次添加相同的Class对象作为KEY

[英]add same object of Class multiple times as KEY in map

i have Test Class and it contains attributes name and salary and now i wants to add same object of Test Class multiple times as Key in map. 我有测试类,它包含属性名称和薪水,现在我想多次添加相同的测试类对象作为映射中的键。 how to achieve that? 如何实现? don't wants to use MultiMap 不想使用MultiMap

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));
    }

}

And it is showing size as 2 only and same key will overwrite value of VALUE(key-value). 并且它仅显示大小为2,并且相同的键将覆盖VALUE(键-值)的值。

Use a Map<TestClass, List<ValueClass>> instead. 请改用Map<TestClass, List<ValueClass>>

Here's a basic example about how to roll your own multimap as a wrapper of Map . 这是一个有关如何将自己的多图作为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);
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM