Listando números dentro de um intervalo em Java
1. Visão geral
Neste tutorial, exploraremos diferentes maneiras de listar sequências de números dentro de um intervalo.
2. Listando números em um intervalo
2.1. Loopfor tradicional
Podemos usar um loopfor tradicional para gerar números em um intervalo especificado:
public List getNumbersInRange(int start, int end) {
List result = new ArrayList<>();
for (int i = start; i < end; i++) {
result.add(i);
}
return result;
}
O código acima irá gerar uma lista contendo números destart (inclusive) aend (exclusivo).
2.2. JDK 8IntStream.range
IntStream, introduzido no JDK 8, pode ser usado para gerar números em um determinado intervalo, aliviando a necessidade de um loopfor:
public List getNumbersUsingIntStreamRange(int start, int end) {
return IntStream.range(start, end)
.boxed()
.collect(Collectors.toList());
}
2.3. IntStream.rangeClosed
Na seção anterior, oend é exclusivo. Para obter números em um intervalo em queend é inclusivo, háIntStream.rangeClosed:
public List getNumbersUsingIntStreamRangeClosed(int start, int end) {
return IntStream.rangeClosed(start, end)
.boxed()
.collect(Collectors.toList());
}
2.4. IntStream.iterate
As seções anteriores usaram um intervalo para obter uma sequência de números. Quando sabemos quantos números em uma sequência são necessários, podemos utilizar oIntStream.iterate:
public List getNumbersUsingIntStreamIterate(int start, int limit) {
return IntStream.iterate(start, i -> i + 1)
.limit(limit)
.boxed()
.collect(Collectors.toList());
}
Aqui, o parâmetrolimit limita o número de elementos para iterar.
3. Conclusão
Neste artigo, vimos diferentes maneiras de gerar números dentro de um intervalo.
Trechos de código, como sempre, podem ser encontradosover on GitHub.