1

Set で、そのクローンから元のオブジェクトを取得する必要があります。

私は次のようなことをしたいと思います:

Set<Object> mySet;
public void myModifyMethod(Object clone){
    if(mySet.contains(clone)){
        Object original = mySet.get(clone); // get method does not seem to exist

        // Modify original object
    }
}

Java SE 6 APIにはそれを行うためのメソッドが見つかりませんでした。私が考えることができる唯一の方法は、セット全体を反復することですが、これはまったく効率的ではありません (シーケンシャル検索からの O(n) ではなく、HashSet から O(1) を達成することを望んでいました)。

それを行うより効率的な方法はありますか?

4

3 に答える 3

2

私が考えることができる唯一の解決策はMap、元のオブジェクトがキーと値の両方であるa を使用してから、元のオブジェクトmap.get(clone)を取得するようなことをすることです。もちろん、メソッドを実装する必要がhashあります。equals

于 2012-06-18T15:06:31.667 に答える
2

Java セットには get メソッドはありません。

すべての要素をリファクタリングして hashmap に追加できます - Map には get メソッドがあります。

しかし、なぜSet で元のオブジェクトをその clone から取得する必要があるのでしょうか。そのインスタンスが既に存在するため、それを使用して存在するかどうかを確認しています。ハッシュコードと equals を適切に実装していることを確認してください。

于 2012-06-18T15:06:49.030 に答える