7

クラス Collections の binarySearch() メソッドに関連する、このOracle Java チュートリアルから取られた次のステートメントがあるとします。

戻り値は両方の形式で同じです。リストに検索キーが含まれている場合、そのインデックスが返されます。そうでない場合、戻り値は (-(挿入ポイント) - 1)です。挿入ポイントは、リストに値が挿入されるポイント、または値または list.size より大きい最初の要素のインデックスです。 () リスト内のすべての要素が指定された値より小さい場合。

binarySearch()not の戻り値が負のインデックスから 1 を引いた値ではなく、負のインデックスのみを返すのはなぜですか? (上記の引用の太字の部分)。

簡単に言うと、なぜ(-(insertion point) - 1)だけでなく(-(insertion point))

前もって感謝します。

4

2 に答える 2

20

-(insertion point)曖昧になるからです。次のものを区別することはできません。

  • 位置でアイテムが見つかりました0
  • アイテムが見つかりません。挿入ポイントは0です。

では-(insertion point) - 1、上記の 2 つのケースで異なる戻り値 (0および-1) が返されます。

于 2013-04-04T12:46:09.693 に答える