微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – Spliterator – size vs subsized flags

https://docs.oracle.com/javase/8/docs/api/java/util/Spliterator.html

SIZED Characteristic value signifying that the value returned from
estimateSize() prior to traversal or splitting represents a finite
size that,in the absence of structural source modification,
represents an exact count of the number of elements that would be
encountered by a complete traversal.

SUBSIZED Characteristic value signifying that all Spliterators
resulting from trySplit() will be both SIZED and SUBSIZED.

>是否存在SIZED标志打开但SUBSIZED标志关闭的情况?
>是否存在SUBSIZED标志打开但SIZED标志关闭的情况?

解决方法

Spliterator的典型示例是SIZED但不是SUBSIZED,是从HashMap创建的Spliterator.它将在其内部条目数组中保持一个范围,其中一些数组条目为空,因为容量高于实际大小.要跳过的空条目的确切分布取决于包含的键的哈希码.

因此,Spliterator最初确实知道它的(总)大小,但是当分割范围时,它不知道每个范围中有多少元素. HashMap具有的元素越多,大致平衡分割的可能性就越高,因此这种策略是合理的,但确切的子集是未知的,并且需要对数组进行迭代才能找到.

报告没有SIZED的SUBSIZED特征是没有意义的,据我所知,甚至没有效果.

原文地址:https://www.jb51.cc/java/121788.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐