首页 > 解决方案 > Apache Commons Collections 是否有 ListValuedTreeMap?

问题描述

我正在尝试找到 MultiValuedTreeMap 的预构建实现。简而言之,我需要一个键来通过使用列表映射到多个值。然后我需要将每个键存储在一个排序的结构中,我想应该是一个树形图——因此得名。

我发现的最接近的是 ArrayListValuedHashMap:https ://commons.apache.org/proper/commons-collections/javadocs/api-4.4/index.html

但是,我没有看到使用 TreeMap 而不是 HashMap 的版本。

我是 Apache Commons 库的新手,所以如果问题很明显/已经解决,请原谅我。

我也知道我自己可以相对轻松地实现这一点,但如果它已经存在,我不想重新发明轮子。

标签: apache-commonsapache-commons-collection

解决方案


没有直接实现ListValuedTreeMap开箱即用。将具体实现List或传递MapListValuedMap预期类AbstractListValuedMap

来自 javadoc:

子类指定用作内部存储的 Map 实现和用作值的 List 实现。

的通用实现ListValuedTreeMap可以这样实现:

public class ListValuedTreeMap<K extends Comparable<K>, V> extends AbstractListValuedMap<K, V> {
    public ListValuedTreeMap() {
        super(new TreeMap<>());
    }

    @Override
    protected List<V> createCollection() {
        return new ArrayList<>();
    }
}

推荐阅读