0

問題文は次のとおりです. Javaで行うことを想定しています.

私はコレクション、クラスのarrayListを持っていますPerson、すなわち

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

人がいる場所、

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

これをキャッシュとして使用し、このコレクションの lib またはラッパー ユーティリティを作成します。findByNameこのユーティリティは、3 つのメソッド/API 、findByAge、を持っている/提供する/公開することになっていますfindByAgeAndName

コレクションを繰り返し処理することは、毎回ではありません。HashMap、またはヒープまたはツリー内のデータのインデックス作成と再配置のようなものを期待しています。ただし、ここでは、少なくともすべてのメソッドに対して 3 つのインデックスを作成する必要があります。その他のオプション、それがあなたがここにいる理由です

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 に答える