草庐IT

Iterator

全部标签

java - Java 8 中 Spliterator 的一个好的用例场景是什么?

Spliterator的一个好的用例场景是什么?Java8中的类? 最佳答案 通常,应用程序开发人员不会直接使用SpliteratorAPI。但是,如果您提供API,并实现自己的类集合类,则可以实现Spliterator以使您的集合适应StreamAPI。这支持函数式方法、并行处理和其他功能。例如,我编写了一个实用程序来枚举网络中的IP地址,由CIDR表示法指定。这不是一个真正的集合。也就是说,它不会一次携带内存中所有地址的列表,只有网络号和网络掩码。但是通过暴露一个Spliterator,它可以很容易地适应一个Stream。(每个

java - Java 8 中 Spliterator 的一个好的用例场景是什么?

Spliterator的一个好的用例场景是什么?Java8中的类? 最佳答案 通常,应用程序开发人员不会直接使用SpliteratorAPI。但是,如果您提供API,并实现自己的类集合类,则可以实现Spliterator以使您的集合适应StreamAPI。这支持函数式方法、并行处理和其他功能。例如,我编写了一个实用程序来枚举网络中的IP地址,由CIDR表示法指定。这不是一个真正的集合。也就是说,它不会一次携带内存中所有地址的列表,只有网络号和网络掩码。但是通过暴露一个Spliterator,它可以很容易地适应一个Stream。(每个

Java:为什么不能迭代迭代器?

我读过WhyisJava'sIteratornotanIterable?和Whyaren'tEnumerationsIterable?,但我还是不明白这是为什么:voidfoo(Iteratorit){for(Xx:it){bar(x);baz(x);}}无法实现。换句话说,除非我遗漏了什么,否则上述内容可能是很好且有效的语法糖:voidfoo(Iteratorit){for(Xx;it.hasNext();){x=it.next();bar(x);baz(x);}} 最佳答案 这很可能是因为迭代器不可重用;每次要迭代元素时,都需要

Java:为什么不能迭代迭代器?

我读过WhyisJava'sIteratornotanIterable?和Whyaren'tEnumerationsIterable?,但我还是不明白这是为什么:voidfoo(Iteratorit){for(Xx:it){bar(x);baz(x);}}无法实现。换句话说,除非我遗漏了什么,否则上述内容可能是很好且有效的语法糖:voidfoo(Iteratorit){for(Xx;it.hasNext();){x=it.next();bar(x);baz(x);}} 最佳答案 这很可能是因为迭代器不可重用;每次要迭代元素时,都需要

java - List.iterator() 是线程安全的吗?

在Java中:List.iterator()是否是线程安全的,即返回的迭代器是否反射(reflect)了列表在任何时候的当前状态,或者仅反射(reflect)列表在其发生时的状态创作? 最佳答案 List.iterator()的行为未定义或与不同的List实现保持一致。对于ArrayList、LinkedList,如果在迭代列表时修改了列表,则可能会得到ConcurrentModificationException。(不能保证)避免此问题的方法是使用synchronizedList()并在迭代列表时锁定列表。对于Vector,集合是

java - List.iterator() 是线程安全的吗?

在Java中:List.iterator()是否是线程安全的,即返回的迭代器是否反射(reflect)了列表在任何时候的当前状态,或者仅反射(reflect)列表在其发生时的状态创作? 最佳答案 List.iterator()的行为未定义或与不同的List实现保持一致。对于ArrayList、LinkedList,如果在迭代列表时修改了列表,则可能会得到ConcurrentModificationException。(不能保证)避免此问题的方法是使用synchronizedList()并在迭代列表时锁定列表。对于Vector,集合是

java - 如何从 Iterator<E> 创建无限 Stream<E>?

看看我制作的以下类(class):publicclassFibonacciSupplierimplementsIterator{privatefinalIntPredicatehasNextPredicate;privateintbeforePrevious=0;privateintprevious=1;privateFibonacciSupplier(finalIntPredicatehasNextPredicate){this.hasNextPredicate=hasNextPredicate;}@OverridepublicbooleanhasNext(){returnhasNe

java - 如何从 Iterator<E> 创建无限 Stream<E>?

看看我制作的以下类(class):publicclassFibonacciSupplierimplementsIterator{privatefinalIntPredicatehasNextPredicate;privateintbeforePrevious=0;privateintprevious=1;privateFibonacciSupplier(finalIntPredicatehasNextPredicate){this.hasNextPredicate=hasNextPredicate;}@OverridepublicbooleanhasNext(){returnhasNe

Java - 在迭代时将元素添加到列表中

我想避免得到ConcurrentModificationException。我该怎么做? 最佳答案 您可以使用ListIterator在迭代过程中支持删除/添加方法。ListIteratoriter=books.listIterator();while(iter.hasNext()){if(iter.next().getIsbn().equals(isbn)){iter.add(newBook(...));}} 关于Java-在迭代时将元素添加到列表中,我们在StackOverflow上

Java - 在迭代时将元素添加到列表中

我想避免得到ConcurrentModificationException。我该怎么做? 最佳答案 您可以使用ListIterator在迭代过程中支持删除/添加方法。ListIteratoriter=books.listIterator();while(iter.hasNext()){if(iter.next().getIsbn().equals(isbn)){iter.add(newBook(...));}} 关于Java-在迭代时将元素添加到列表中,我们在StackOverflow上