在Java中是否有一个数据结构实现Map
接口并有效地保存具有连续整数键的元素数组?
在我看来,要获得最佳效率,这等效于将具有索引偏移值的数组或ArrayList
包装在Map
接口中,或将哈希表包含哈希函数{{ 1}}和最小的支持数组。
我知道这很简单,但是我不想重新发明轮子。 JDK中是否有这样的数据结构?还是有提供实现的库?
答案 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/