What is the name of the interface in Java that allows a single iteration? Iterable allows multiple iterations AFAIK. My use case is below.
private static void iterateOverArray(double[] values) {
OneShotIterable<Double> valuesIterable = Arrays.stream(values);
oneShotIterate(valuesIterable);
}
private static void oneShotIterate(OneShotIterable<Double> valuesIterable) {
for (double value : valuesIterable) {
// do stuff
}
}
I know I can iterate over double[] values but I want to accept the most general input I can.
CodePudding user response:
The specific interface you desire, that supports a for loop and does not carry an implication of supporting multiple iterations, does not exist in Java.
Iterator and Stream are each single-use, but you must do some work to get them from an Iterable.
I am sorry if this is not the answer you hoped for, but it's the true answer.
CodePudding user response:
Do you mean something like this - an Iterable with only one item?
Iterable<Thing> iterable = java.util.Collections.singleton( myThing );
If you mean, you want an Iterable to only be iterated once, then what behaviour are you expecting upon a second iteration? An OnlyOnceException to be thrown?
