0

Collections.unmodifiableSetを使用すると、セットの変更不可能なビューを作成できます。これは、提供されたセットをラップすることによって行われると想定しています。変更不可能なセットが既に変更不可能なセットから作成された場合、パフォーマンス上の問題はありますか?

例えば

Set<String> set = Collections.unmodifiableSet(Collections.unmodifiableSet(Collections.unmodifiableSet(new HashSet<String>())));
4

2 に答える 2

0

Collections.unmodizableSet-セットをUnmodizableSetインスタンスでラップするだけで、すべてのメソッド呼び出しをプロキシするだけです。追加の有限メソッド呼び出しシーケンスは、パフォーマンスの考慮事項ではありません。何千ものラッパーについて話しているのでなければ、必ず確認してください。

于 2013-03-05T11:43:26.323 に答える
0

メソッドのシグネチャは次のとおりです。

public static <T> Set<T> unmodifiableSet(Set<? extends T> s) {
    return new UnmodifiableSet<T>(s);
}

クラスでCollections。object の新しいインスタンスを返しますUnmodifiableSet。現在、このクラスは内部静的クラスです。

static class UnmodifiableSet<E> extends UnmodifiableCollection<E> implements Set<E>, Serializable

クラスには、、、などのUnmodifiableCollectionメソッドがあります。それが理由です。addremoveaddAllthrows UnsupportedOperationExceptionUnmodifiable

もちろん、何千回もコレクションをインスタンス化すると、問題が発生します。

于 2013-03-05T12:16:37.143 に答える