• java知识学习30-集合2


    Set集合:是一个接口,可通过常用实现类hashSet运用功能。

      Set集合特点:不包含重复的元素;没有带索引的方法,所以不能用for循环实现遍历,可通过iterator迭代器和增强for循环实现遍历;不保证存放元素的顺序,可能与存入的顺序不一致。

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

      

      HashSet集合概述和特点:继承Set集合并实现该集合接口。

        1.底层数据结构是哈希表;

        2.对集合的迭代顺序不做保证,即存储和取出的顺序不一定一致;

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

        4.由于是Set集合,所以是不包含重复的元素。

      HashSet集合保证元素不重复,可以查看该集合的add方法的源码分析;如下图分析

        

    哈希表:

      

      下图为采用数组+链表实现的逻辑方式:

        1.HashSet集合默认初始容量为16;

        2.计算每个需要存储元素的哈希值,通过hashCode方法获取;

        3.通过哈希值对16取余,根据余数将元素放到对应的位置。若位置为空则直接放入,若已经有元素了则比较哈希值,不同则通过链表方式放入已有元素下面;哈希值相同再通过equals比较值是否相同,都相同则去重该元素不放入,值不同则也是通过链表方式放入已有元素下面。

        

    LinkedHashSet集合的概述和特点:由哈希表和链表实现的set接口。

      

    TreeSet集合概述:间接继承了set集合,元素是有序排列的集合,但不是按存储和取出的顺序,而是按照一定的规则的排序,具体排序方式取决于构造方法。

      元素的自然排序主要通过Comparable接口实现,所以如果元素是自定义类型一般是要实现该接口才能自然排序,不然会报类型转换错误ClassCastException。

      

      Comparable的使用:看compareTo方法返回的什么数据而进行排序,为0则表示每个数都是重复的,为1则表示后一个存储的比前一个大(升序),为-1则表示后一个存储的前一个小(降序)

        

       Comparator的使用:作为比较器,作为入参可用在TreeSet(Comparator comparator)中实现排序规则,主要也是重写compareTo方法。

        

  • 相关阅读:
    数据结构与算法(0)--必知必会
    数据结构概览
    Python 数据分析学习路线
    数据分析交互工具--使用jupyter
    Vue项目搭建
    luffy_08
    luffy_07
    luffy_06
    luffy_05
    luffy_04
  • 原文地址:https://www.cnblogs.com/blogofzxf/p/14643262.html
Copyright © 2020-2023  润新知