Java_1_15

Set

  • 无序
  • 不包含重复元素的集合
  • 不带索引的方法,所以不能使用普通for循环遍历

哈希值

  • 是JDK根据对象的地址 或者 字符串 或者 数字 算出来的 int 类型的 数值
  • Object 类中有一个方法可以获取对象的哈希值
    • public int hashCode()
      • 返回对象的哈希码值
  • 对象的哈希值特点
    • 同一个对象多次调用 hashCode() 方法返回的哈希值相同
    • 默认情况下,不同对象的哈希值不同。
    • 但是重写 hashCode() 方法,可以实现让不同对象的哈希值相同。

哈希表

  • JDK8 之前,底层采用 数组 + 链表 实现,可以说是一个元素为链表的数组
  • JDK8之后,长度比较长的时候,底层实现了优化

HashSet 集合

特点

  • 底层数据结构是 哈希表
  • 对集合的迭代顺序不做任何保证,即不保证存储和取出元素的顺序一致
  • 不带索引的方法,不能用普通for循环
  • 是Set 集合,不包含重复元素

HashSet 集合存储元素

  • 要保证元素唯一性,需要重写 hashCode()equals()

LinkedHashSet 集合

特点

  • 哈希表和链表实现的Set接口,具有可预测的迭代次序
  • 由链表保证元素 有序,元素的存储和取出顺序是一致的
  • 由哈希表保证元素唯一,没有重复的元素

TreeSet 集合

特点

  • 元素有序
    • 不是指存储和取出顺序一致
    • 而是指按照一定的规则进行 排序 ,具体排序方式取决于构造方法
      • TreeSet()
        • 根据元素的自然排序进行排序
      • TreeSet(Comparator comparator)
        • 根据指定的比较器进行排序
  • 不带索引,NO 普通for循环
  • Set 集合,不包含重复元素

自然排序Comparable的使用

  • 存储学生对象并遍历,创建TreeSet 集合使用 无参构造
  • 要求:
    • 按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序
结论
  • 用 TreeSet 集合存储自定义对象,无参构造 使用 自然排序 对元素进行排序
  • 自然排序,即让元素所属的类 实现 Comparable 接口重写CompareTo(T o)方法
  • 重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写。

比较器Comparator 的使用

  • 存储学生对象并遍历,创建TreeSet 集合使用 带参构造
  • 要求:
    • 按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序
结论
  • 用 TreeSet 集合存储自定义对象,带参构造 使用 比较器排序 对元素进行排序
  • 比较器排序,即让集合构造方法接收 Comparator的实现类对象,重写 Compare(T o1,T o2) 方法
  • 重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值