在java中的内存数据库算法/设计/逻辑

时间:2013-03-29 07:36:48

标签: java database-design indexing

问题陈述如下,假设在java中完成,

我有Person类的集合,arrayList,即

List<Person> lisOfPersons = new ArrayList<Person>();

人在哪里,

public class Person{
    int age;
    String name;
    //constuctor and setters and getters
}

现在,我想将它用作我的缓存,并围绕此集合创建一个lib或包装器实用程序。该实用程序应该具有/提供/公开三种方法/ API findByNamefindByAgefindByAgeAndName

每次迭代收集都是不可能的。我希望像{/ 1}}或堆或树中的索引和重新排列数据一样。但是在这里我需要至少为每个方法创建三个索引。其他选择,这就是你在这里的原因

1 个答案:

答案 0 :(得分:2)

您可以使用Map<Integer, List<Person>>Map<String, List<Person>>进行快速搜索。

请记住,对象不会被复制到地图中,您只使用引用,因此没有很多内存开销。

对于AgeAndName搜索,一旦从这两个地图获得结果,您就可以使用Collection.retainAll()功能。请记住克隆集合,因为retain可以就地工作。

  Set<Person> unique = new Set<Person> ( mapName.get("name") );
  unique.retainAll( mapAge.get(11) );
  return unique;
相关问题