2016-11-04 16 views
1

新しい項目をリストに追加するとき、私は通常Collections.sort(list)を使ってそれをソートして、正しい場所に表示します。新しく追加されたアイテムがこの種の間にどの位置に来たのかを簡単に知る方法はないのですか、退屈なリニアスキャン/自宅で検索されたバイナリ検索を続けていますか?ソート後のアイテムの位置を見つけますか?

答えて

3

あなたはソート順に挿入されたすべての要素をしたい場合は、並べ替え、並べ替え、追加行い、追加、並べ替え、追加しないでください...

それを行うための最も遅い方法についてです。

正しい位置(インデックス)に挿入するには、Collections.binarySearch()を使用してその位置を見つけ、add(int index, E element)と呼んで実際の挿入を行います。

+0

binarySearch()は、アイテムが既に追加されていると仮定します。追加されていない場合は-1を返します。私は、アイテムを追加し、並べ替え、バイナリ検索を使用することができたと思いますか? – user7085962

+0

@ user7085962もう一度javadocを読んでみてください。 -1を返しません。これは 'indexOf()'のような連続した検索ではありません。 – Andreas

+0

私は文字通り私のプログラムでそれを使用して-1を返しました – user7085962

関連する問題