Java中具有连续整数键的元素的有效映射

时间:2019-03-21 11:46:18

标签: java dictionary data-structures

在Java中是否有一个数据结构实现Map接口并有效地保存具有连续整数键的元素数组?

在我看来,要获得最佳效率,这等效于将具有索引偏移值的数组或ArrayList包装在Map接口中,或将哈希表包含哈希函数{{ 1}}和最小的支持数组。

我知道这很简单,但是我不想重新发明轮子。 JDK中是否有这样的数据结构?还是有提供实现的库?

2 个答案:

答案 0 :(得分:1)

如果不需要支持更新(这将使您的问题更加棘手),请考虑传入IntFunction<T>来指定映射,而不是Map<Integer,T>

拥有Map时,可以传递map::get,而没有地图时,可以使用许多简单的方法来指定映射。例如,您可以使用lambda定义一个简单的映射函数,例如:

IntFunction<T> mapper = v -> {
    if (v < offset || v >= offset+array.length)
        return null;
    return array[v-offset];
}

答案 1 :(得分:0)

如果要查找要排序的键,则可以在Java中使用SortedMap接口 https://www.geeksforgeeks.org/sortedmap-java-examples/