zoukankan      html  css  js  c++  java
  • Java进阶核心之集合框架Set·19

    • 什么是Set数据结构
      • Set相对于List是简单的⼀种集合,具有和 Collection 完全⼀样的接⼝,只是实现上不同,Set 不保存重复的元素,存储⼀组唯⼀,⽆序的对象。
      • Set中的元素是不能重复的, 实现细节可以参考Map,因为这些Set的实现都是对应的Map的⼀ 种封装。⽐如HashSet是对HashMap的封装,TreeSet对应TreeMap
      • Set底层是⼀个HashMap,由于HashMap的put()⽅法是⼀个键值对,当新放⼊HashMap的 Entry中key 与集合中原有Entry的key相同(hashCode()返回值相等,通过equals⽐较也返回 true),新添加的Entry的value会将覆盖原来Entry的value,但key不会有任何改变。
      • 允许包含值为null的元素,但最多只能有⼀个null元素
    • 常⻅的实现类
      • HashSet
        • HashSet类按照哈希算法来存取集合中的对象,存取速度⽐较快
        • 对应的Map是HashMap,是基于Hash的快速元素插⼊,元素⽆顺序。
      • TreeSet
        • TreeSet类实现了SortedSet接⼝,能够对集合中的对象进⾏排序

    //创建对象,HashSet和TreeSet api⼀样 
    Set set = new HashSet<>(); 
    //往容器⾥⾯添加对象 
    set.add("jack"); 
    //清空元素 
    set.clear(); 
    //返回⼤⼩ 
    set.size(); 
    //根据对象删除元素 
    set.remove("jack"); 
    //是否为空 
    set.isEmpty();
    • 两者常⻅区别
      • HashSet不能保证元素的排列顺序,TreeSet是SortedSet接⼝的唯⼀实现类,可以确保集合元素处于排序状态
      • HashSet底层⽤的是哈希表,TreeSet采⽤的数据结构是红⿊树(红⿊树是⼀种特定类型的⼆叉树)
      • HashSet中元素可以是null,但只能有⼀个,TreeSet不允许放⼊null
      • ⼀般使⽤HashSet,如果需要排序的功能时,才使⽤TreeSet(性能原因)

    Bug? 不存在的!
  • 相关阅读:
    二维数组最大子数组算法
    寻找最大子数组
    最大值bug 调试
    多路电梯调度算法
    分析一个文本文件各个词出现的频率,并把频率最高的十个词打印出来。
    使用redis实现生产者消费者模式
    简单使用redis实现sso单点登录
    MongoDB批量导入及简单的性能优化
    mysql安装
    字符串操作性能优化
  • 原文地址:https://www.cnblogs.com/mrchenyushen/p/15760877.html
Copyright © 2011-2022 走看看