首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Java 集合框架 HashSet HashMap 源码剖析

总体介绍 之所以把HashSetHashMap放在一起讲解,是因为二者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说HashSet里面有一个HashMap(适配器模式)。...从上图容易看出,如果选择合适的哈希函数,put()get()方法可以在常数时间内完成。但在对HashMap进行迭代时,需要遍历整个table以及后面跟的冲突链表。...将对向放入到HashMap或HashSet中时,有两个方法需要特别关心:hashCode()equals()。...所以,如果要将自定义的对象放入到HashMap或HashSet中,需要@Override hashCode()equals()方法。...前面已经说过HashSet是对HashMap的简单包装,对HashSet的函数调用都会转换成合适的HashMap方法,因此HashSet的实现非常简单,只有不到300行代码。

41320

.NET中的泛型集合

HashSet HashSet是一个无序的能够保持唯一性的集合。我们也可以把HashSet看作是Dictionary,只不过TKeyTValue都指向同一个对象。...此外,它还实现了非泛型的ICollectionIList接口,并在必要时进行装箱拆箱,以及进行执行时类型检查,以保证新元素始终与T兼容。...同样,HashSet所维护的顺序也不一定就是值添加的顺序。 HashSet添加了一个RemoveWhere方法,可以移除所有匹配给定谓词的条目。...HashSet一样它也提供了RemoveWhere方法(尽管接口中没有),并且还提供了额外的属性(MinMax)用来返回最小最大值。...当我们在使用 Stack,List,Queue 等集合时,根本不需要在乎有没有 GetHashCode 方法,但是如果你想使用 Dictionary,HashSet(.NET

13820
领券