有没有一种方法来获取数组的迭代器?像这样:
class MyCollection implements Iterable<String> { String[] items; @Override public Iterator<String> iterator() { return items.iterator(); //obviously, it doesn't compile. } }
您可以使用Arrays.asList:
Arrays.asList
return Arrays.asList(items).iterator();
它只是将数组包装在列表实现中,以便您可以iterator()在其上调用方法。
iterator()
请注意,这种方法仅适用于对象数组。对于原始数组,您将必须实现自己的迭代器(例如,使用匿名类)。
从Java 8开始,您还可以使用Arrays.stream开箱即用的迭代器(并且如果items是或int[],也可以使此代码进行编译: double[]``long[]
Arrays.stream
items
int[]
double[]``long[]
return Arrays.stream(items).iterator();
尽管您将无法使用原始数据类型char,float并且short因为没有相应的流实现。但是,您可以使用以下解决方法:
char
float
short
return IntStream.range(0, items.length).mapToObj(i -> items[i]).iterator();