zoukankan      html  css  js  c++  java
  • HashSet

      HashSet是Set接口的典型实现,因此不能包含有重复元素。同时也是无序的(这个无序是指遍历HashSet时得到的元素顺序跟add进入的顺序会不一样)。此外元素可以是null,但只能添加一个null元素,并且null元素放在第一位。

      new HashSet()对象其实是new HashMap()对象,初始化一个大小为16的Entry数组,这个通过看HashSet源码可以知道。

      而且通过源码可以知道往HashSet添加元素时为了排除重复元素,HashSet使用了HashMap的键的去重,两者为同一段代码,也即是说原理实现与HashMap的键去重是一样的。需要注意的是:判断两个元素是否相同,先是比较它们的HashCode()返回hashCode值是否相等,并且再通过equals()判断两个对象是否相等。所以需要重写对象的hashCode()和equals(),尽量保证两个对象通过equals()方法比较返回true时,它们的hashCode()方法返回值也相等。

      同时HashSet使用Hash算法存储元素,因此具有良好的存取和查询能力。往HashSet里添加一个元素时,会调用对象重写的HashCode()方法得到该对象的hashCode值。然后根据该hashCode值决定该对象在HashSet中存储的位置。

  • 相关阅读:
    【24点游戏】cocos2dx 源码
    『Python题库
    『Python题库
    【python安装】Windows上安装和创建python开发环境
    『Linux基础
    『Linux基础
    『Linux基础
    『Linux基础
    『Linux基础
    『Python基础-14』匿名函数 `lambda`
  • 原文地址:https://www.cnblogs.com/Jin1000x/p/10878170.html
Copyright © 2011-2022 走看看