Iterable方法
forEach遍历函数的方法(更简洁)
default void forEach(Consumer super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
造轮子:
public class Speak {
private String hello=“我说:”;
public void iSpeak(Consumer ation){
ation.accept(hello);
}
}
final Speak speak = new Speak();
speak.iSpeak(item->{
System.out.println(item+“hello word!”);
});
//我说:hello word!
iterator是返回迭代器
Iterator iterator();
在Iterable描述的元素上创建一个Spliterator。 返回值: 这个Iterable描述的元素上的Spliterator。 实现 要求: 默认实现会从可迭代对象的Iterator创建一个早期绑定spliterator。spliterator继承了iterable迭代器的快速失败属性。 实现 说明: 通常应该重写默认实现。由默认实现返回的spliterator具有较差的分割功能,没有大小限制,并且不报告任何spliterator特征。实现类几乎总是可以提供更好的实现。
default Spliterator spliterator() {
return Spliterators.spliteratorUnknownSize(iterator(), 0);
}
Spliterator(splitable iterator可分割迭代器)接口是Java为了并行遍历数据源中的元素而设计的迭代器,这个可以类比最早Java提供的顺序遍历迭代器Iterator,但一个是顺序遍历,一个是并行遍历
ArrayList arrStr=new ArrayList<>();
arrStr.add(“1”);
arrStr.add(“2”);
arrStr.add(“3”);
arrStr.add(“4”);
arrStr.add(“5”);
arrStr.add(“6”);
final Spliterator spliterator = arrStr.spliterator();
final Spliterator spliterator1 = spliterator.trySplit();
final Spliterator spliterator2 = spliterator1;
while (spliterator.tryAdvance(item->{
System.out.println(item);
})){}
System.out.println(“--------------”);
while (spliterator1.tryAdvance(item->{
System.out.println(item);
})){}
System.out.println(“--------------”);
while (spliterator2.tryAdvance(item->{
System.out.println(item);
})){}
https://baijiahao.baidu.com/s?id=1649268592254063537&wfr=spider&for=pc



