2013-06-29 7 views
1

Непосредственно из этого java api:Добавление « 0» до конца диапазона подмножества

Почему добавить «\ 0» будет «открытым» конец один диапазон, как описано в следующей цитате? Я проверил escape-последовательность «\ 0», и он говорит, что он представляет нулевой символ. Что такое нулевой символ в терминах строк? и почему добавление к «высокому параметру» подмножества должно включать сам параметр, включенный в диапазон?

Если вам нужен замкнутый круг (который включает в себя как конечные точки), а также тип элемента позволяет для расчета преемника заданного значения, просто просить поддиапазон от lowEndpoint до преемника (highEndpoint). Предположим, например, что s - отсортированный набор строк . Следующая идиома получает представление, содержащее все строки с s от низкого до высокого, включительно:

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

Заранее благодарим за ваше время.

+0

В нескольких словах: Почему s.subSet (низкий, высокий + "\ 0"); должен включать высокий индекс в диапазоне? что означает добавление «\ 0»? благодаря – Rollerball

ответ

1

При вызова подмножества с высоким и низким пределом, то высоких предельным элемент не будет включен (т.е. low <= element < high будет включен, но это исключает high).

Если вы хотите, чтобы он был включен, вам нужно указать предел немного выше, но недостаточно высокий, чтобы включить другой элемент.

Самый простой способ сделать следующую большую строку - добавить \0, так как сделать это дольше, он будет сортироваться сразу после верхнего предела (поэтому включен верхний элемент ограничения), но невозможно найти другую строку что происходит между ними, поэтому нет риска непреднамеренного включения дополнительного элемента.

2

high+"\0" - способ получения строки, которая будет сортироваться сразу после high.

Так что, если вы хотите подмножество, которое включает в себя high элемент, вам нужно указать ограничение на подмножество в high+"\0"

Например, если вы имеете дело с SortedSet<Int> и вы хотели подмножество между 4 и 8, включительно, вы бы использовали s.subSet(4, 8+1). high+"\0" - эквивалент строки.

Смежные вопросы