0

外部コレクションに次の2つのメソッドがあるとします:add(BusiessObject)最後までとremove(BusinessObject)。これで、必要なオブジェクトの順序がわかったので、外部コレクションがその順序を維持していることを確認したいと思います。したがって、BO1、BO2、BO3から始めて、BO2を削除して再度追加する場合は、順序が同じになるようにします。

現在のアイテムのリストを必要な順序で保持することを考えていました。挿入するたびに、外部リストをクリアしてから、並べ替えられたリストからすべての要素を追加しました。他のアイデアはありますか?

4

3 に答える 3

2

外部コレクションを制御できない場合は、提案したソリューションがその方法だと思います。Java側のコレクションを順序付けておくために、sortメソッドを呼び出し続ける必要はありませんが、TreeSetTreeMapなどの順序付けられたコレクション、またはSortedSetSortedMapを実装するコレクションを使用してデータを保存します。@AdelBoutrosが言ったように、あなたはまだComparableまたはComparatorを実装する必要があります。

ちなみに、あなたの外部コレクションに興味があります。何と言ってもいいですか?それが何であるかを知っていれば、別のアプローチで考えることができるかもしれません。

于 2012-08-10T17:07:52.577 に答える
1

コレクションの並べ替えに組み込まれたJavaの何が問題になっていますか?

オブジェクトにComparableインターフェースとVOILAを実装させるだけです:)

于 2012-08-10T17:04:31.493 に答える
0

たぶん、アダプタパターンを使用するのがここにぴったりでしょう。あなたの場合、List(または注文の目的により適した別のコレクション)を実装し、外部コレクションを持つクラスを作成します。アダプタのメソッド内では、外部コレクションの要素を必要に応じて操作します。質問で言及したアイデアを使用している場合でも、Adapterはそのための優れた設計です。

別の方法はその逆です。外部コレクションを拡張し、リスト/キュー/セットを用意します。したがって、クライアントコードは、この新しい拡張クラスをラッパーとして使用します。次に、リスト内で、ソートと比較可能/コンパレータの手法を明らかに使用します。

于 2012-08-10T17:30:18.447 に答える