I saw the code below from java tutorial oracle. In order to count the number of words between doorbell
(inclusive) and pickle
(inclusive), the autho
I believe \0
is the null character. The next word in the ASCII dictionary from a lexigraphic point after the word pickle
is pickle\0
. The JavaDoc for SortedSet.subset()
has the following to say:
Returns a view of the portion of this set whose elements range from fromElement, inclusive, to toElement, exclusive.
In other words, if your code snippet were the following:
int count = dictionary.subSet("doorbell", "pickle").size();
then the word pickle
would not appear in the subset.
A better example might be if you wanted to get all words of the form pickles
, but nothing of the form picklet
(ending in t
), then you would use the following code:
int count = dictionary.subSet("doorbell", "picklet").size();
Here is a link to the ASCII character table.
subSet(a, b)
is inclusive of a
but exclusive of b
. Therefore if you want to find a subset that is inclusive of the upper bound pickle
, you have to use the next possible string after pickle
as the (exclusive) upper bound.
You can get this by adding the null character \0
to the end of the string.
In Java, a char
is "really" just an integer between 0
and 65535
, and the compareTo
method of String
sorts characters by these values. To see that \0
is the smallest possible char
value you can print its value like this:
System.out.println((int) '\0'); // Prints 0