Java学习——集合的使用(三)

目录

Set集合

关于哈希值

HashSet集合

LinkedHashSet集合

TreeSet集合

 

Set集合

  • set集合特点:

    • 不包含重复元素的集合

    • 没有带索引的方法,所以不能使用for循环遍历

  • 创建集合对象,使用Set接口的泛型实现类HashSet

    • HashSet对迭代的顺序不做任何保证(例如,添加的顺序时1,2,3输出可能是2,3,1)

关于哈希值

  • 哈希值是JDK根据对象的地址或者字符串或者数字,算出来的int类型的数值

  • Object类中有一个方法,hashCode(),可以获取对象的哈希值

  • hashCode的合同:

    • 只要在执行java程序期间多次在同一个对象上调用它,hashCode返回的必须是相同的整数,前提是不修改equals比较中使用的信息,在同一应用程序的一次执行到另一次执行,该整数不需要保持一致

    • 若两个对象根据equals方法相等,则这两个方法调用hashcode方法返回的值必须相等

    • 若两个对象根据equals方法不相等,就必须返回不同的hashcode值

  • 默认的不同的对象的哈希码是不同的:

  • 通过方法重写,可以实现不同的对象的哈希值是相同的

HashSet集合

  • HashSet特点:

    • 底层数据结构是哈希表

    • 对迭代顺序不做任何保证,也就是不保证放入和取出元素的顺序一致。

    • 没有带索引的方法,所以不能使用for循环进行遍历

    • 不包含重复的元素集合

  • HashSet集合存储学生对象

    使用HashSet列表存储学生对象的时候出现了重复元素,是因为Student类没有重写equals和hashCode方法

    重写完方法后:

LinkedHashSet集合

  • LinkedHashSet特点:

    • 哈希表和链表实现的Set接口,具有可预测的迭代次序

    • 链表保证了元素的有序性,所以说元素的放入和取出顺序是一致的

    • 由于哈希表保证元素的唯一,所以不会有重复的元素

TreeSet集合

  • TreeSet集合特点

    • 元素有序,这里的顺序不是指存储和取出的顺序,而是按照一定的规则进行排序,具体排序方法取决于构造方法

      TreeSet():无参构造方法根据元素的自然顺序进行排序

      TreeSet(Comparator comparator):根据指定的比较器进行排序

    • 没有带索引的方法,所以不能使用普遍的for循环遍历

    • 由于是Set集合,所以不包含重复使用的集合

  • TreeSet使用无参构造,自然排序,且不包含重复添加的元素

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Iron_Sp-man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值