「優先度」が1〜3の範囲のオブジェクトがあります。もちろん、優先度が高くなることを意味します。
ある種のキューにオブジェクトがあるリンクリストがあります。基本的に私がやりたいのは、LinkedListをループして、新しいオブジェクトをすでにリストにあるオブジェクトと比較することです。オブジェクトが次のオブジェクトよりもint優先度が高いオブジェクトに到達した場合は、優先度の低いオブジェクト。
オブジェクトの優先度が他のオブジェクトと同じである場合は、同じ優先度のオブジェクトの後ろに挿入します。オブジェクトがそれよりも優先度の低い別のオブジェクトを見つけることができない場合は、単に最後に挿入したいだけです。
これは私が現在持っているものです
User s;
ListIterator <User> queue = getList().listIterator();
if (queue.hasNext()) {
User next;
while (queue.hasNext()) {
next = queue.next();
if (queue.hasNext() && next.getId() < s.getId()) {
queue.add(next);
queue.set(s);
} else {
queue.add(next);
}
}
}else {
queue.add(s);
}
java.util.PriorityQueue
代わりに使用してください。
挿入順に同じ優先度のエントリを削除する必要があるという要件を満たすには、優先度とタイムスタンプに基づいてカスタムコンパレータを提供する必要があります。タイムスタンプを含めるようにエントリオブジェクトを変更できない場合は、優先度、タイムスタンプ、およびエントリへの参照を保持するラッパーを作成する必要があります。ただし、同じ優先度を持つ後のエントリが削除順に後で来るようにします。
また、PriorityQueue
リターンのイテレータはランダムな順序でエントリを返し、優先順位では繰り返さないという事実にも注意してください。削除のみが優先順位でエントリを返すことが保証されています。(理由の説明については、https://stackoverflow.com/a/8129239/18157を参照してください)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加