• 【HashSet】


    HashSet 类概述
    不保证 set 的迭代顺序
    特别是它不保证该顺序恒久不变。
    HashSet 如何保证元素唯一性
    底层数据结构是哈希表(元素是链表的数组)
    哈希表依赖于哈希值存储添加功能底层依赖两个方法:
    int hashCode()
    boolean equals(Object obj)
     
    HashSet:存储字符串并遍历
    问题:为什么存储字符串的时候,字符串内容相同的只存储了一个呢?
    通过查看 add 方法的源码,我们知道这个方法底层依赖两个方法:hashCode()和 equals()。
    步骤:
    首先比较哈希值
    如果相同,继续走,比较地址值或者走 equals()
    如果不同,就直接添加到集合中
     
    按照方法的步骤来说:
    先看 hashCode()值是否相同
    相同:继续走 equals()方法
    返回 true:说明元素重复,就不添加
    返回 false:说明元素不重复,就添加到集合
    不同:就直接把元素添加到集合
    如果类没有重写这两个方法,默认使用的 Object()。一般来说不会相同。
    而 String 类重写了 hashCode()和 equals()方法,所以,它就可以把内容相同的字符串去掉。只留下一个。
    终身学习者
  • 相关阅读:
    JS 缓存
    时区转换
    JQuery easy UI 通过updateRow 排序
    SqlServer2008 数据库同步的两种方式
    C#各种辅助类收集(CSharpCommonHelper)
    Doc命令收集(一)
    Sql Server Alter语句
    JQuery easy UI updateRow
    Doc命令收集(二)
    六大开源搜索引擎工具
  • 原文地址:https://www.cnblogs.com/zuixinxian/p/10340887.html
Copyright © 2020-2023  润新知