0 is the only right offset, purely from mathematical principles. Here's the reasoning:
We posit the need for the following concept: - A range going from the first element to the last element. i.e. the ability to describe a 'subList' or 'substring' that makes a copy of the list. - A range describing the empty set. We'd like for this range to adhere to the following rules: RULE 1: Counting elements in a list is in the domain of the natural numbers. Therefore, if negative numbers are needed the solution is inferior. RULE 2: In a list of, say, 10 elements, it would be odd if '11' is anything other than an Out-Of-Bounds number. This is all you need to conclude the superiority of the 0-offset, end indices markers to the right of the final character system that java also uses: The end index has to be to the RIGHT and not to the LEFT of the final character. If it was to the LEFT, then you'd need negative numbers to describe the empty set of a set with 1 element in it. After all: list.subList(0, 0) would then describe a list of size 1, whereas we want one of size 0, so we'd have to write list.subList(0, -1). That's awkward, so end indices have to work like they do in java. Now that we've established why end indices have to work like this, we can prove that lists have to be 0-based. Let's say I have a list of 10 elements and I want to describe a sublist that covers everything, but we live in base 1: List copy = list.subList(1, 11); Now '11' shows up as a valid number in a 10-length list. That's rather annoying, as it doesn't feel very natural for 11 to be a meaningful count into a size 10 list. thus, 0 offset: List copy = list.subList(0, 10); //Real java, and clearly the 'right' answer. :) On Apr 16, 2:08 pm, Kevin Wright <[email protected]> wrote: > Think outside the box! Why must we restrict ourselves to integers? There's > some wonderful stuff going on with transcendental numbers right now... > > On 16 April 2010 13:03, Wildam Martin <[email protected]> wrote: > > > On Fri, Apr 16, 2010 at 13:51, Fabrizio Giudici > > <[email protected]> wrote: > > >> Just don't make it 2 :-) > > > What about -1? Just to be a bit unconventional. > > > I think you wanted to say "innovative" instead ov "unconventional". ;-) > > > -- > > Martin Wildam > > -- > Kevin Wright > > mail/google talk: [email protected] > wave: [email protected] > skype: kev.lee.wright > twitter: @thecoda > > -- > You received this message because you are subscribed to the Google Groups > "The Java Posse" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group > athttp://groups.google.com/group/javaposse?hl=en. -- You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/javaposse?hl=en.
