0

コレクション ビジネス オブジェクトの順序をどのように維持しますか?

<BO1, BO2, BO3, BO4>

BO2を削除すると、AMD BO4が得られます

<BO1, BO3>

そしてBO2を入れると

<BO1, BO2, BO3>
4

6 に答える 6

3

これを行うにはいくつかの方法がありますが、使用するコレクションのタイプによって異なります。明らかに、挿入の順序を維持するのではなく、リスト内の要素のタイプに基づく順序を維持する必要があります。

したがって、これまたはあれを使用すると言う前に、次の質問を自問してください。

コレクションに重複する要素を含めることはできますか?

List1)YESの場合:オブジェクトの実装(ArrayList、、など)を使用できますLinkedList。ただし、挿入するたびにリストを並べ替える必要があります。

List<MyObj> list = ...
list.add(myObjInstance);
Collections.sort(list);

TreeList挿入ごとにリストをソートする必要をなくすために、ApacheCommonsCollectionsの実装を使用できます。

2)前の質問に対する答えがNOの場合。次に、を使用しTreeSetます。その実装では、挿入ごとにコレクションを並べ替える必要はありません。

ソート可能Comparableにするには、オブジェクト要素がインターフェースを実装する必要があることに注意してください。

于 2012-08-10T15:27:44.507 に答える
3

ソートされた順序を使用しない限り、コレクションが BO2 を真ん中に配置する必要があることをどのように認識すべきかわかりません。

ビジネスオブジェクトがComparableを実装している場合、これはあなたが望むことを行います

SortedSet<BusObj> bos = new TreeSet<>();
bos.addAll(Arrays.asList(bo1, bo2, bo3, bo4));
bos.removeAll(Arrays.asList(bo2, bo4));
bos.add(bo2);
于 2012-08-10T15:23:19.260 に答える
2

ビジネス オブジェクトComparableを作成し、並べ替えられたコレクションを使用します ( TreeSetwhich is aなどSortedSet)。

于 2012-08-10T15:23:04.240 に答える
1

SortedSet を使用する

http://docs.oracle.com/javase/7/docs/api/java/util/SortedSet.html

于 2012-08-10T15:22:52.453 に答える
0

2つのオプションがあります。aListを使用し、適切な場所に挿入して自分で並べ替えを行うか、並べ替えられたコレクションを使用します。

ソートされたコレクションはSortedSet http://docs.oracle.com/javase/6/docs/api/java/util/SortedSet.htmlです。

SortedSetには、Comparableインターフェイスを実装するためのエントリが必要です。

あなたが見なければならない別の質問もあります:Javaでソートされたコレクション

于 2012-08-10T15:27:30.390 に答える
0

私の質問に答える:

ランダムアクセスに興味がなければ、PriorityQueueも解決策になると思います。

于 2012-08-10T16:29:42.130 に答える