tags : java-collections
spliterator
是java1.8引入的一种并行遍历的机制,Iterator
提供也提供了对集合数据进行遍历的能力,但一个是顺序遍历,一个是并行遍历。
如上图所示,Arrays
的分割迭代函数有2种形式,spliterator(xxx [])
, spliterator(xxx [] , int, int)
, 具体的xxx
包括int
, long
, double
, T
,下文就以int
类型作为demo进行分析。
举个栗子
Spliterator.OfInt sInt = Arrays.spliterator(arr);
IntConsumer consumer = new IntConsumer() {
@Override
public void accept(int value) {
// TODO Auto-generated method stub
System.out.println(value);
}
};
sInt.tryAdvance(consumer);
程序输出:1
将代码修改一下:
int [] arr = {
1,2,3,4,5,6,7,8,9};
Spliterator.OfInt sInt = Arrays.spliterator(arr, 2, 5);
IntConsumer consumer = new IntConsumer() {
@Override
public void accept(int value) {
// TODO Auto-generated method stub
System.out.println(value);
}
};
sInt.tryAdvance(consumer);
程序输出:3
突然有点感觉,spliterator
的第二个和第三个参数可能是指原数组的起始和结束下标,再把代码修改一下:
int [] arr = {
1,2,3,4,5,6,7,8,9};
Spliterator.OfInt sInt = Arrays.spliterator(arr, 2, 5);
IntConsumer consumer = new IntConsumer() {
@Override
public void accept(int value) {
// TODO Auto-generated method stub
System.out.println(value);
}
};
sInt.tryAdvance(consumer);
sInt.tryAdvance(consumer);
sInt.tryAdvance(consumer);
sInt.tryAdvance