1

このJava APIから直接:

次の引用で説明されているように、「\0」を追加すると、範囲の端が「開く」のはなぜですか? 「\0」エスケープ シーケンスを確認したところ、null 文字を表していると表示されています。文字列におけるヌル文字とは何ですか? サブセットの「高パラメータ」に追加すると、パラメータ自体が範囲に含まれる必要があるのはなぜですか?

閉じた範囲 (両方のエンドポイントを含む) が必要で、要素の型が特定の値の後続の計算を許可している場合は、lowEndpoint から後続 (highEndpoint) までの部分範囲を要求するだけです。たとえば、s が文字列の並べ替えられたセットであるとします。次のイディオムは、s 内のすべての文字列を含むビューを取得します。

SortedSet sub = s.subSet(low, high+"\0");

お時間をいただきありがとうございます。

4

2 に答える 2

2

high+"\0"の直後にソートされる文字列を取得する方法highです。

したがって、要素を含むサブセットがhigh必要な場合は、サブセットへの制限を次のように指定する必要があります。high+"\0"

たとえば、a を扱ってSortedSet<Int>いて、4 から 8 までの範囲のサブセットが必要な場合は、 を使用しますs.subSet(4, 8+1)high+"\0"同等の文字列です。

于 2013-06-29T12:18:49.763 に答える
1

上限と下限を指定してサブセットを呼び出すと、上限要素は含まれません(つまりlow <= element < high、含まれますが、除外されますhigh)。

含めたい場合は、制限を少し高くする必要がありますが、別の要素を含めるには十分ではありません

次に大きな文字列を作成する最も簡単な方法は、 を追加する\0ことです。これを長くすると、上限の直後に並べ替えられるため (したがって、上限要素が含まれます)、それらの間で並べ替える別の文字列を見つけることはできません。そのため、誤って余分な要素を含めるリスクはありません。

于 2013-06-29T12:18:36.533 に答える