コレクション ビジネス オブジェクトの順序をどのように維持しますか?
<BO1, BO2, BO3, BO4>
BO2を削除すると、AMD BO4が得られます
<BO1, BO3>
そしてBO2を入れると
<BO1, BO2, BO3>
コレクション ビジネス オブジェクトの順序をどのように維持しますか?
<BO1, BO2, BO3, BO4>
BO2を削除すると、AMD BO4が得られます
<BO1, BO3>
そしてBO2を入れると
<BO1, BO2, BO3>
これを行うにはいくつかの方法がありますが、使用するコレクションのタイプによって異なります。明らかに、挿入の順序を維持するのではなく、リスト内の要素のタイプに基づく順序を維持する必要があります。
したがって、これまたはあれを使用すると言う前に、次の質問を自問してください。
コレクションに重複する要素を含めることはできますか?
List
1)YESの場合:オブジェクトの実装(ArrayList
、、など)を使用できますLinkedList
。ただし、挿入するたびにリストを並べ替える必要があります。
List<MyObj> list = ...
list.add(myObjInstance);
Collections.sort(list);
TreeList
挿入ごとにリストをソートする必要をなくすために、ApacheCommonsCollectionsの実装を使用できます。
2)前の質問に対する答えがNOの場合。次に、を使用しTreeSet
ます。その実装では、挿入ごとにコレクションを並べ替える必要はありません。
ソート可能Comparable
にするには、オブジェクト要素がインターフェースを実装する必要があることに注意してください。
ソートされた順序を使用しない限り、コレクションが BO2 を真ん中に配置する必要があることをどのように認識すべきかわかりません。
ビジネスオブジェクトがComparableを実装している場合、これはあなたが望むことを行います
SortedSet<BusObj> bos = new TreeSet<>();
bos.addAll(Arrays.asList(bo1, bo2, bo3, bo4));
bos.removeAll(Arrays.asList(bo2, bo4));
bos.add(bo2);
ビジネス オブジェクトComparable
を作成し、並べ替えられたコレクションを使用します ( TreeSet
which is aなどSortedSet
)。
2つのオプションがあります。aList
を使用し、適切な場所に挿入して自分で並べ替えを行うか、並べ替えられたコレクションを使用します。
ソートされたコレクションはSortedSet
http://docs.oracle.com/javase/6/docs/api/java/util/SortedSet.htmlです。
SortedSetには、Comparable
インターフェイスを実装するためのエントリが必要です。
あなたが見なければならない別の質問もあります:Javaでソートされたコレクション
私の質問に答える:
ランダムアクセスに興味がなければ、PriorityQueueも解決策になると思います。