0

问题陈述如下,假设是用java做的,

我有集合,Person类的arrayList,即

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

人在哪里,

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

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

每次迭代集合都不是什么事情。我期待类似/围绕索引和重新排列数据HashMap或堆或树中的数据。但是在这里我需要至少为每种方法创建三个索引。其他选择,这就是你在这里的原因

4

1 回答 1

2

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

请记住,对象不会被复制到映射中,您只是使用引用,因此没有太多的内存开销。

至于 AgeAndName 搜索,Collection.retainAll()一旦从这两个地图中获得结果,您就可以使用函数。请记住克隆集合,因为保留原地工作。

  Set<Person> unique = new Set<Person> ( mapName.get("name") );
  unique.retainAll( mapAge.get(11) );
  return unique;
于 2013-03-29T07:39:25.323 回答