Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有多个键到值的hashmap?_Java_Hashmap - Fatal编程技术网

Java 具有多个键到值的hashmap?

Java 具有多个键到值的hashmap?,java,hashmap,Java,Hashmap,我有一个关于具有多个值键的hashmaps的问题。假设我有关键/价值 1/a、1/b、1/3、2/aa、2/bb、2/cc 这样行吗 如果有,我是否可以循环使用它并仅显示键1或键2的所有值?java.util.HashMap不允许将多个值映射到单个键。你想用番石榴的。通读接口以确定哪个实现的版本适合您。

我有一个关于具有多个值键的hashmaps的问题。假设我有关键/价值

1/a、1/b、1/3、2/aa、2/bb、2/cc

这样行吗


如果有,我是否可以循环使用它并仅显示键1或键2的所有值?

java.util.HashMap不允许将多个值映射到单个键。你想用番石榴的。通读接口以确定哪个实现的版本适合您。

您可以使用列表作为值的映射,例如:

HashMap<Integer, List<String>> myMap = new HashMap<Integer, List<String>>();

您可以使用列表作为值的地图,例如:

HashMap<Integer, List<String>> myMap = new HashMap<Integer, List<String>>();

简单的多重贴图类似于以下骨架:

public class MultiMap<K,V>  
{
    private Map<K,List<V>> map = new HashMap<K,List<V>>();
    public MultiMap() 
    { 
        // Define constructors
    }

    public void put(K key, V value)
    {
        List<V> list = map.get(key);
        if (list == null)
        {
            list = new ArrayList<V>();
            map.put(key, list);
        }
        list.add(value);
    }

    public List<V> get(K key)
    {
        return map.get(key);
    }

    public int getCount(K key)
    {
        return map.containsKey(key) ? map.get(key).size() : 0;
    }
}

它不能直接实现Map,因为put不能返回从未替换过的替换元素。完整的细化将定义一个接口MultiMap和一个实现类,为了简洁起见,我省略了它,以及您可能需要的其他方法,例如V removeK key和V getK key,int index。。。任何你能想到的可能有用的东西:-

一个简单的多重贴图看起来像这样的骨架:

public class MultiMap<K,V>  
{
    private Map<K,List<V>> map = new HashMap<K,List<V>>();
    public MultiMap() 
    { 
        // Define constructors
    }

    public void put(K key, V value)
    {
        List<V> list = map.get(key);
        if (list == null)
        {
            list = new ArrayList<V>();
            map.put(key, list);
        }
        list.add(value);
    }

    public List<V> get(K key)
    {
        return map.get(key);
    }

    public int getCount(K key)
    {
        return map.containsKey(key) ? map.get(key).size() : 0;
    }
}

它不能直接实现Map,因为put不能返回从未替换过的替换元素。完整的细化将定义一个接口MultiMap和一个实现类,为了简洁起见,我省略了它,以及您可能需要的其他方法,例如V removeK key和V getK key,int index。。。还有任何你能想到的可能有用的东西:-

映射将处理多个键到一个值,因为只有键需要是唯一的: 映射键,值

但是,多个值的一个键要求映射的多重映射严格为: 映射键,列表值

此外,如果您决定使用HashMap和/或HashSet,那么无论使用什么键,都应该实现一个好的hadhCode函数


编辑:不得不使用,而不是因为我的手机或sof的手机站点编辑器对符号进行了重击……odd

地图将多个键处理为一个值,因为只有键需要唯一: 映射键,值

但是,多个值的一个键要求映射的多重映射严格为: 映射键,列表值

此外,如果您决定使用HashMap和/或HashSet,那么无论使用什么键,都应该实现一个好的hadhCode函数


编辑:不得不使用,而不是因为我的手机或sof的手机网站编辑器对符号进行了重击…奇怪的

谢谢。有没有其他不使用外部资源的方法?谢谢。有没有其他不使用外部资源的方法?