zoukankan      html  css  js  c++  java
  • Java中各种集合总结(一)

    (一)集合与数组

    数组:(存基本数据类型)-->存对象的一种容器,长度固定,【不适合在对象数量未知的情况下使用】

    集合:(存对象,对象类型可以不一样)-->长度可变,可在多数情况下使用。

    (二)层次关系

    1.0 如图所示:图中,实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口:

    2.0 其中集合的 详解

    Collection接口【集合类  ”根接口“;Java中没有这个接口的直接实现类】----(有两个儿子)---->

        List:(有序、重复--(又有俩儿儿子)-->

                 ArrayList:底层数据结构--->【动态数组   ;线程不安全,效率高】--->查询快,增删慢【移动所有数据】。

                 LinkedList :底层数据结构--->【链表;线程不安全,效率高】--->查询慢,增删快。【特别适用于批量插入删除数据

                 Vector:底层数据结构--->【数组;线程安全,效率低】-->查询快,增删慢

         Set:(无序、唯一)--->提供了按索引访问的方式。

                  HashSet:底层结构--->【哈希表---依赖俩儿方法->hashCode()和equals()】(一般规则:对象equals 是true的话,hashCode需要相同,但是hashCode相同的对象不一定equals,这就是所谓的冲突现象,但是有不同的冲突解决方法。你的hashCode()设计的好的话冲突也就小了。比如楼上给出的超出int范围之后这种hashCode()实现,对象肯定是无数的,但是hash实现是有限的呢,所以冲突了。)

                  TreeSet: 底层结构--->【红黑树】:一种自平衡的二叉树。返回值是否为0-->唯一性;

                   LinkedHashSet【有序,不重复】:底层结构--->【链表和哈希表】链表保证有序;哈希表保证-->唯一

    ②Map:(键值对、键唯一、值不唯一)与Collection接口独立的,另一个接口。--->Map包含了key-value对。Map不重复的key,但可有相同的value

                   HashMap:底层结构-->【哈希表;线程不安全,效率高--依赖俩儿方法-->hashCode()和equals()判断是否添加到集合】

                   Hashtable:底层结构--->【哈希表;线程安全,效率低】-->依赖俩儿方法->hashCode()和equals()

                   LinkedHashMap: 底层结构--->【链表和哈希表】:链表保证有序;哈希表保证唯一。

                   TreeMap: 底层结构--->【红黑树】返回值是否为0-->唯一性

    ③Iterator:所有的集合类-->都实现这个接口。【遍历集合元素的接口】用法:

                 (1)hasNext()是否还有下一个元素。

                 (2)next()返回下一个元素。

                 (3)remove()删除当前元素。

    3.0 几种重要接口和类的对比:

                 

                 

  • 相关阅读:
    [湖南集训]谈笑风生
    【SCOI2010】序列操作
    ●BZOJ 3994 [SDOI2015]约数个数和
    ●BZOJ 3309 DZY Loves Math
    ●UOJ 21 缩进优化
    ●BZOJ 2693 jzptab
    ●BZOJ 2154 Crash的数字表格
    ●BZOJ 3529 [Sdoi2014]数表
    ●2301 [HAOI2011] Problem b
    ●BZOJ 2820 YY的GCD
  • 原文地址:https://www.cnblogs.com/not-alone/p/8536754.html
Copyright © 2011-2022 走看看