1

要素を手動で反復せずにセットを検索したいのですが、Collections.search(myset、target、new ComparatorThing())を実行するメソッドがないようです。私は何かを見ていませんか?

ありがとう。

編集:

  • 要素の自然な順序とは別のフィールドを探しています。
  • 手動の回避策として、次の静的な方法を使用しました。とにかくコンパレータのカスタムフィールドを使用して他の人について推測することはできないので、大丈夫です。
public static  T search(final Set set, final T searchEntry, final Comparator comparator) {
    for (final T entry : set) {
        if (comparator.compare(entry, searchEntry) == 0) {
            return entry;
        }
    }

    return null;
}
4

4 に答える 4

1

ここでさらに詳細が必要です-?に含まれるオブジェクトの個々のフィールドで検索しようとしていSetますか?Setまたは、 ?で特定の要素を見つけます。

ベアインターフェイスとしてのそれ自体のアイデアにはSet、順序付けのアイデアがありません。すべての要素を反復処理する必要があります。

ただしSortedSet、順序付けが行われているに制限すると、順序付けを利用できる可能性がありますが、Setランダムアクセスが許可されていないため、すべての要素を反復処理するか、詳細情報を知る必要があります。それがであるということを超えたコレクションSet

アルゴリズムと達成しようとしていることについて詳しく説明していただけますか?

Setaは、「検索」するデータを表す理想的な方法ではない可能性があります。

于 2010-07-29T14:41:24.107 に答える
1

たとえば、 http://commons.apache.org/collections/を見てください。public static java.util.Set SetUtils.predicatedSet(set, predicate)

于 2010-07-29T15:39:34.353 に答える
0

インターフェースcontains(Object o)から試してみてください。CollectionSetインターフェイスはCollectionを拡張するため、Collectionメソッドを実装するにはすべてのセットが必要です。

検索するオブジェクトがセットであることが保証されていることだけを知っている場合は、各要素を反復処理せずに検索する方法があるという保証はありません。このcontains()方法は、内容に応じて実行される場合と実行されない場合があります。実際に使用しているセット実装のタイプ。

参考文献

于 2010-07-29T14:41:21.407 に答える
0

ceilingTreeSetには、たとえば、検索キー以上の次の要素を検索してfloor、次に低い要素を取得するために役立つ可能性のあるメソッドがいくつかあります。また、headSet、tailSet、およびsubSetを使用して、セットの下限、上限、または指定された制限の間の部分を検索します。

于 2010-07-29T15:12:20.497 に答える