【发布时间】:2013-04-02 21:17:12
【问题描述】:
我正在尝试实现一个支持 java.util.Map 的数据库,大多数接口(如 put 和 get)都很容易实现,但我无法找出最佳实现方式:
@Override
public Set<K> keySet() {
// TODO Auto-generated method stub
return null;
}
@Override
public Collection<V> values() {
// TODO Auto-generated method stub
return null;
}
@Override
public Set<Map.Entry<K, V>> entrySet() {
// TODO Auto-generated method stub
return null;
}
我担心键和值可能会数以百万计的记录。因此,当访问这些方法时,我认为它的内存和 cpu 无法有效地获取和存储所有“键”或“值”。
有哪些选项可以实现内存高效的实现方式?
为 entrySet 实现迭代器的策略是什么?
【问题讨论】:
-
您不是唯一需要内存高效地图的人,我不会重新发明轮子并自己发明。首先,尝试使用
HashMap之类的标准类型之一,然后如果您发现性能问题,请在某个库中查找实现。见stackoverflow.com/questions/3972127/… -
也就是说,除了如何将数据放入和取出之外,您已经弄清楚了? (首先,您必须确定数据库组织,然后制定缓存方案。最难的是知道何时需要搜索数据库以进行查找操作——您需要有某种方案来缓存数据库键值。 )
-
您不必在内存中构建完整的集合,您只需提供遍历数据库的迭代器。
标签: java map implementation