zoukankan      html  css  js  c++  java
  • java 19 -1 集合的特点和数据结构总结

      1 1.集合
      2   Collection(单列集合)
      3     List(有序,可重复)
      4      ArrayList
      5                 底层数据结构是数组,查询快,增删慢
      6                 线程不安全,效率高
      7       Vector
      8                 底层数据结构是数组,查询快,增删慢
      9                 线程安全,效率低
     10     LinkedList
     11                 底层数据结构是链表,查询慢,增删快
     12                 线程不安全,效率高
     13    Set(无序,唯一)
     14       HashSet
     15                 底层数据结构是哈希表。
     16                 哈希表依赖两个方法:hashCode()和equals()
     17                 执行顺序:
     18                     首先判断hashCode()值是否相同
     19                         是:继续执行equals(),看其返回值
     20                             是true:说明元素重复,不添加
     21                             是false:就直接添加到集合
     22                         否:就直接添加到集合
     23                 最终:
     24                     自动生成hashCode()和equals()即可
     25                     
     26     LinkedHashSet
     27                 底层数据结构由链表和哈希表组成。
     28                 由链表保证元素有序。
     29                 由哈希表保证元素唯一。
     30       TreeSet
     31                 底层数据结构是红黑树。(是一种自平衡的二叉树)
     32                 如何保证元素唯一性呢?
     33                     根据比较的返回值是否是0来决定
     34                 如何保证元素的排序呢?
     35                     两种方式
     36                         自然排序(元素具备比较性)
     37                             让元素所属的类实现Comparable接口
     38                         比较器排序(集合具备比较性)
     39                             让集合接收一个Comparator的实现类对象
     40   Map(双列集合)
     41         A:Map集合的数据结构仅仅针对键有效,与值无关。
     42         B:存储的是键值对形式的元素,键唯一,值可重复。
     43         
     44     HashMap
     45             底层数据结构是哈希表。线程不安全,效率高
     46                 哈希表依赖两个方法:hashCode()和equals()
     47                 执行顺序:
     48                     首先判断hashCode()值是否相同
     49                         是:继续执行equals(),看其返回值
     50                             是true:说明元素重复,不添加
     51                             是false:就直接添加到集合
     52                         否:就直接添加到集合
     53                 最终:
     54                     自动生成hashCode()和equals()即可
     55     LinkedHashMap
     56                 底层数据结构由链表和哈希表组成。
     57                     由链表保证元素有序。
     58                     由哈希表保证元素唯一。
     59     Hashtable
     60             底层数据结构是哈希表。线程安全,效率低
     61                 哈希表依赖两个方法:hashCode()和equals()
     62                 执行顺序:
     63                     首先判断hashCode()值是否相同
     64                         是:继续执行equals(),看其返回值
     65                             是true:说明元素重复,不添加
     66                             是false:就直接添加到集合
     67                         否:就直接添加到集合
     68                 最终:
     69                     自动生成hashCode()和equals()即可
     70     TreeMap
     71             底层数据结构是红黑树。(是一种自平衡的二叉树)
     72                 如何保证元素唯一性呢?
     73                     根据比较的返回值是否是0来决定
     74                 如何保证元素的排序呢?
     75                     两种方式
     76                         自然排序(元素具备比较性)
     77                             让元素所属的类实现Comparable接口
     78                         比较器排序(集合具备比较性)
     79                             让集合接收一个Comparator的实现类对象
     80     
     81 2:到底使用那种集合
     82     看需求。
     83     
     84   是否是键值对象形式:
     85     是:Map
     86       键是否需要排序:
     87                 是:TreeMap
     88                 否:HashMap
     89             不知道,就使用HashMap。
     90             
     91   否:Collection
     92       元素是否唯一:
     93                 是:Set
     94                     元素是否需要排序:
     95                         是:TreeSet
     96                         否:HashSet
     97                     不知道,就使用HashSet
     98                     
     99                 否:List
    100        要安全吗:
    101                         是:Vector(其实现在也不用它,后面讲解了多线程以后,再回顾用谁)
    102                         否:ArrayList或者LinkedList
    103                             增删多:LinkedList
    104                             查询多:ArrayList
    105                         不知道,就使用ArrayList
    106             不知道,就使用ArrayList
    107             
    108 3:集合的常见方法及遍历方式
    109   Collection:
    110         add()
    111         remove()
    112         contains()
    113         iterator()
    114         size()
    115         
    116     遍历:
    117             增强for
    118             迭代器
    119             
    120         |--List
    121             get()
    122             
    123             遍历:
    124                 普通for
    125         |--Set
    126     
    127   Map:
    128         put()
    129         remove()
    130         containskey(),containsValue()
    131         keySet()
    132         get()
    133         value()
    134         entrySet()
    135         size()
    136         
    137     遍历:
    138             根据键找值
    139             根据键值对对象分别找键和值
    140             
    141     至少需要达到:
    142         讲解过的任意一个集合,要求存储什么,就能够存储什么。
    143         并且,还要能够遍历出来。
    144 
    145 4:ArrayList,LinkedList,HashSet,HashMap(掌握)
    146     存储字符串和自定义对象数据并遍历
    147     
    148 5:集合的嵌套遍历(理解)
    何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
  • 相关阅读:
    Windows SDK编程(Delphi版) 之 应用基础,楔子
    一个小问题引发的论证思考
    Delphi 组件开发教程指南(7)继续模拟动画显示控件
    用PyInstaller将python转成可执行文件exe笔记
    使用 .Net Memory Profiler 诊断 .NET 应用内存泄漏(方法与实践)
    Microsof Office SharePoint 2007 工作流开发环境搭建
    How to monitor Web server performance by using counter logs in System Monitor in IIS
    LINQ之Order By
    window 性能监视器
    内存泄露检测工具
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5914433.html
Copyright © 2011-2022 走看看