zoukankan      html  css  js  c++  java
  • Set<E> 接口简明

    java. util. Set 接口
    Set 接口中的方法和 Collection 中方法一致的。Set 接口取出方式只有一种, 迭代器 。


    • HashSet : 底层数据结构是哈希表,线程 是不同步的 。 无序,高效;HashSet 集合保证元素唯一性 :通过元素的 hashCode 方法,和 equals 方法完成的。当元素的 hashCode 值相同时,才继续判断元素的 equals 是否为 true。如果为 true,那么视为相同元素,不存。如果为 false,那么存储。如果 hashCode 值不同,那么不判断 equals,从而提高对象比较的速度。
    • LinkedHashSet : 有序,hashset 的子类。
    • TreeSet : 对 Set 集合中的元素的进行指定顺序的排序。 不同步 。TreeSet 底层的数据结构就是二叉树。

    对于ArrayList 集合,判断元素是否存在,或者删元素的依据都是equals 方法。
    对于HashSet 集合,判断元素是否存在,或者删除元素,依据的是 hashCode 方法和 equals 方法。


    TreeSet:

    用于对 Set 集合进行元素的指定顺序排序,排序需要依据元素自身具备的比较性。
    如果元素不具备比较性,在运行时会抛出ClassCastException 异常。

    • 所以元素需要实现Comparable 接口 ,让元素具备可比较性, 重写 compareTo 方法 。依据 compareTo 方法的返回值,确定元素在 TreeSet 数据结构中的位置。
    • 或者用比较器方式,将Comparator对象传递给TreeSet构造器来告诉树集使用不同的比较方法
  • 相关阅读:
    Goahead源码解析(转)
    登录处理
    action交互
    无需FQ,自建本地CDN,秒上StackOverFlow!
    浅谈Linux中的信号处理机制(三)
    漫谈C++11 Thread库之原子操作
    漫谈c++11 Thread库之使写多线程程序
    浅谈Linux中的信号处理机制(二)
    浅谈Linux中的信号处理机制(一)
    CentOS7 安装Nginx
  • 原文地址:https://www.cnblogs.com/LittleTreasureBox/p/8824219.html
Copyright © 2011-2022 走看看