要素が2つの属性(名前と年齢)を持つTreeSetを持っています。特定の名前のオブジェクトを検索するたびに、拡張されたforループまたはイテレータに頼らざるを得ません。TreeSetのcontains()メソッドを使用できません
名は、このオブジェクト内に「カプセル化」されたので、私は、特定の名前を持つオブジェクトを検索するメソッドを使用することはできません。
この問題を解決する方法はありますか?つまり、log(n)
の時間複雑度を利用する方法はありますか?
TreeSetのすべての要素は名前でソートされているので、私は考えるべき方法があります。
私が達成したいものの例:
public Element search(String name) {
// if some TreeSet element's name.equals(name), return the Element
}
私が使用したくないんものの例:
一般にpublic Element search(String name) {
for (Element entry : tree) {
if (entry.getName().equals(name)) {
return entry;
}
}
return null;
}
なぜ名前からwhaterversへのマップではなく、Setですか? – user2357112
@ user2357112:これは割り当てなので、コレクションを変更できません。 –
次に、O(n)ルックアップを使用するか、これらのルックアップ操作の実行を避けることが期待されます。また、補助地図を作成して維持する必要があるか、割り当てが矛盾している、または誤解している可能性があります。 – user2357112