Gee*_*eek 8 java algorithm hashtable hashmap time-complexity
从HashSet的JavaDocs :
该类为基本操作(添加,删除,包含和大小)提供恒定的时间性能,假设散列函数在桶之间正确地分散元素.迭代此集合需要的时间与HashSet实例的大小(元素数量)加上后备HashMap实例的"容量"(桶数)之和成比例.因此,如果迭代性能很重要,则不要将初始容量设置得太高(或负载因子太低)非常重要
为什么迭代需要的时间与总和(集合中的元素数量+支持映射的容量)成比例,而不仅仅是集合本身中元素的数量?
.
Tho*_*mas 13
HashSet使用HashMap元素是地图键的位置来实现.由于映射具有可定义数量的桶,可以包含一个或多个元素,因此迭代需要检查每个桶,无论它是否包含元素.