Por lo tanto, en Java, siempre que se da un rango indexado, el límite superior es casi siempre exclusivo.¿Se supone siempre que los límites superiores de los rangos indexados son exclusivos?
De java.lang.String
:
substring(int beginIndex, int endIndex)
devuelve una nueva cadena que es una subcadena de esta cadena. La subcadena comienza en el
beginIndex
especificado y se extiende hasta el carácter del índiceendIndex - 1
De java.util.Arrays
:
copyOfRange(T[] original, int from, int to)
from
- el índice inicial del rango a copiar, incluido
to
- el índice final del rango que se va a copiar, exclusivo.
De java.util.BitSet
:
set(int fromIndex, int toIndex)
fromIndex
- índice del primer bit a activar.
toIndex
- index después del último bit que se va a establecer.
Como puede ver, parece que Java intenta hacer una convención consistente de que los límites superiores son exclusivos.
Mis preguntas son:
- Es esta la recomendación de autoridad oficial?
- ¿Hay violaciones notables que debamos tener cuidado?
- ¿Hay un nombre para este sistema? (Ala "0 BASADA" vs "1-based")
ACLARACIÓN: Entiendo completamente que una colección de N
objetos en un sistema de base 0 está indexado 0..N-1
. Mi pregunta es que si se da un rango de (2,4)
, puede ser de 3 o 2, dependiendo del sistema. ¿Cómo llamas a estos sistemas?
nuevo, la cuestión no es "primer índice 0
último índice N-1
" vs "primer índice 1
último índice N
" sistema; eso se conoce como el sistema basado en 0 versus el basado en 1.
El problema es "Hay 3 elementos en (2,4)
" frente a "Hay 2 elementos en los sistemas (2,4)
". ¿Cómo llamas a estos, y es uno sancionado oficialmente sobre el otro?
Se llama rango medio abierto. – fredoverflow
Ah sí, ya escuché ese término. Entonces, ¿diría que las Colecciones Java están "basadas en 0 con rangos medio abiertos", entonces? – polygenelubricants