zoukankan      html  css  js  c++  java
  • 第八章:集合

    第八章:集合
    数组和集合的区别

    数组:一旦声明了数组长度无法改变,只能保持指定的数据类型,元素的数据类型必须相同,不能混排。
    集合:长度和动态扩容,元素类型可以是任何类型,可以混合使用。


    Collection接口

    List接口

    List接口:不唯一,有序(添加顺序)


    ArrayList

    ArrayList可以看作可变长度的数组,在内存中存储空间是连续的。
    优点:随机访问或遍历时效率较高。
    缺点:添加和删除元素时效率较低。


    LinkedList

    采用的链表结构进行存储,在内存中存储空间是不连续的。
    优点:添加和删除元素是效率较高
    缺点:随机访问或遍历时效率较低。


    Vector

    Vector类似与ArrayList的线性结构,Vector是基于线程安全的,在多线程中使用;ArrayList是非线程安全的,效率较高
    Stack

    Stack(栈):后进先出(Last In First Out) LIFO
    Quence

    队列:先进先出(First In First Out) FIFO
    Set接口

    无序(添加循序),不重复。
    HashSet

    HashSet:采用哈希表的方式存储。
    优点:查询,添加,删除效率较高

    HashSet如何保证其元素的唯一性?
    在添加元素时调用hashCode()获取元素的哈希码,判断要添加元素的哈希码是否相同,如果相同调用equals方法比较内容是否相同;如果哈希码不相同,equals方法将不再调用。

    如果两个对象的equals比较的结果为true,其hashCode一定相同;反之则不成立。


    LinkedHashSet

    LinkedHashSet继承了HashSet,采用的是哈希码+链表的结构进行存储,其中的元素有序(添加顺序)。
    TreeSet

    TreeSet:采用二叉树的方式进行存储,其中元素有序(大小顺序)。要添加元素是必须实现Comparable接口或传入一个比较器(需要实现Comparator接口)


    Map接口

    Map接口并不是Collection接口的子接口,Map接口采用的键值对方式进行存储数据。
    HashMap

    HashMap类似于HashSet,采用的是哈希码进行存储
    无序。


    Hashtable

    Hashtable与HashMap类似,不同之处主要是以下两点:
    1.HashMap是非线程安全的,而Hashtable是线程安全的
    2.HashMap中的键和值都运行为null,而Hashtable不允许。


    LinkedHashMap

    LinkedHashMap是HashMap的子类,类似于LinkedHashSet,采用的是哈希表+链表的结构存储数据。其中元素是有序的(添加顺序)


    TreeMap

    TreeMap采用二叉树的方式存储,与TreeSet类似。其中的元素有序(大小顺序)。
    要求添加的元素必须是可比较大小
    1.实现Comparable接口
    2.创建一个比较器(实现Comparator接口)
    在添加元素时根据键的自然顺序进行存储数据。


    Collections类

    Collections类是一个对Collection集合进行操作的工具类型,其中提供一些静态的工具方法方便操作

    sort()
    reverse()
    binaySearch()
    .....

  • 相关阅读:
    [转载]MATLAB 图像处理命令
    html Window与document区别(轉)
    ICMP数据包结构(转)
    CString,string,char*之间的转换(转)
    word或dword区别
    VS2010 皮肤扩展
    Unicode _T和L和_TXET
    转:git 的常用命令
    git fetch 和 git pull 的区别
    mac git 命令自动补全
  • 原文地址:https://www.cnblogs.com/panwenshuai/p/7029040.html
Copyright © 2011-2022 走看看