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