Set容器

Set(不能放重复元素) 用foreach或者迭代器进行遍历

  • HashSet(底层HashMap实现)
  • 用hashcode和equals方法比较两个对象是否相等
    如果哈希值不相等,那么一定是不同对象,如果相等有可能不是同一对象,这时候还要执行equals方法,所以要想使用HashSet必须要重写hashcode和equals方法
  • hashcode()->相同的对象需要产生相同hash码,不同的对象尽量产生不同的hash码
  • equals() ->比较两个对象的规则(先比引用,再比类型,再比属性),一般使用eclipse自动生成,不用自己写。
    • 自反性(自己和自己比一定为true)
    • 对称性(若a==b 为true,那么b==a为true)
    • 传递性(若a==b 为true, b=c,那么a==c为true)
    • 一致性(不管多少次执行,只返回相同的结果)
  • java堆空间采用hash算法
    如果两个对象的hash码相等(冲突),采用桶结构,先用hash码找到地址, 然后用equals方法在桶中挨个比对。
  • hash函数最有名的两个是MD5码和SHA1
  • TreeSet(底层用排序树实现)去重+排序
  • 因为需要排序所以在使用时对象需要实现Comparable接口
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,224评论 18 399
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 9,172评论 0 11
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 9,772评论 0 16
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 5,431评论 0 3
  • 史蒂夫.乔布斯(Steve Jobs)为创新下的定义是:「把不同的要素结合起来。如果你有比别人更多的体验,或者对自...
    王者之声阅读 4,932评论 0 2

友情链接更多精彩内容