Java:排序的多映射,它是列表映射而不是集合映射

脚本

我正在寻找一个排序的多映射,其中一个键可以映射到多个值,无论equals()这些值返回什么因此,它不应该是这样的:

import com.google.common.collect.*;

public class Test {
    public static void main(String[] args) {
        Multimap<Double, String> multimap = TreeMultimap.create();
        multimap.put(3.0, "a");
        multimap.put(3.0, "a");
        multimap.put(2.0, "b");
        // prints "b", "a"
        for(String s : multimap.values())
            System.out.println(s);
    }
}

我一直在使用,java.util.Map<Key, List<Value>>但它带有一些样板。

一种可能性是参数化类型:

public class SortedMapOfLists<K, V> {
    SortedMap<K, List<V>> map = new TreeMap<>();
    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> values() {
        List<V> values = new ArrayList<>();
        for(List<V> list : map.values())
            for(V value : list)
                values.add(value);
        return values;
    }
}

但是这个实现的功能有限。

路易斯·沃瑟曼

听起来您正在寻找MultimapBuilder.treeKeys().arrayListValues().build().

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章