The new, Java 8 way:
List<Integer> range = IntStream.range(1, 501).boxed().collect(Collectors.toList());
Using Guava, you can resort to a Range
: https://guava.dev/releases/19.0/api/docs/com/google/common/collect/Range.html
Of course, there will still be loops in your code, but they just might be hidden from the code for simplicity sake.
For instance:
Range<Integer> yourValues = Range.closed(1, 500);
Check https://github.com/google/guava/wiki/RangesExplained for some more examples.
Keep in mind that if you do need to eventually iterate over the Range
, you cannot do so directly, only through using DiscreteDomains.integers()
.
Btw. if it is only to be used in some sort of iteration, you could simply create a basic class which implements the Iterable
interface, to skip the insertion altogether.
Something like this:
import java.util.Iterator;
public class IntegerRange implements Iterable<Integer> {
private int start, end;
public IntegerRange(int start, int end) {
if (start <= end) {
this.start = start;
this.end = end;
} else {
this.start = end;
this.end = start;
}
}
@Override
public Iterator<Integer> iterator() {
return new IntegerRangeIterator();
}
private class IntegerRangeIterator implements Iterator<Integer> {
private int current = start;
@Override
public boolean hasNext() {
return current <= end;
}
@Override
public Integer next() {
return current++;
}
}
}
Which could be used in some way like this:
Iterable<Integer> range = new IntegerRange(1, 500);
for (int i : range) {
// ... do something with the integer
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With