zoukankan      html  css  js  c++  java
  • Java集合总结

    Collection(单列集合)

      List接口特点:元素存取有序 有索引 可重复

        ArrayList

          有序 有索引 可重复

          底层使用数组,查询快增删慢

          线程不安全

        Vector

          有序 有索引 可重复

          底层使用数组,查询快增删慢

          线程安全,效率低

        LinkedList

          有序 有索引 可重复

          底层使用双向循环链表结构,查询慢,增删快,add()和remove()方法快

          提供了大量特有的首尾操作的方法

          线程不安全

      Set接口的特点:元素存取无序(按照其内部的特有顺序) 无索引 不可重复

        HashSet

          排列无序,元素无索引 不可重复

          底层使用Hash表(JDK1.8中数组+链表/红黑树,当一个链表存储元素超过8个后,就会转为红黑树)实现,具有良好的存取和查找性能

          内部是HashMap

        TreeSet

          排列无序,元素无索引 不可重复

          底层使用二叉树实现

          排序存储

          内部是TreeMap的SortedSet

        LinkedHashSet

          排列有序,元素无索引 不可重复

          底层使用 哈希表(JDK1.8中数组+链表/红黑树)+链表

          内部是LinkedHashMap

      Queue

          在两端出入的list,也可以用数组或链表实现

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Map(双列集合)特点:键值对一一对应,键不能重复 值能重复

      HashMap

          键不可重复,值可重复

          底层使用 哈希表(数组+链表/红黑树,当一个链表存储元素超过8个后,就会转为红黑树)

          线程不安全

          key和value都可以为null

          HashMap基于Hash算法实现的,我们通过put(key,value)存储,get(key)来获取,当传入key时,HashMap会根据key.hashCode()计算出hash值,根据hash值将value保存到bucket中,当计算出的hash值相同时,我们称之为hash值冲突,HashMap的做法是用链表和红黑树存储相同hash值的value。当hash冲突个数较少时(8),使用链表否则使用红黑树

      HashTable

          键不可重复,值可重复

          底层Hash表

          线程安全

          key和value都不能为null

          是遗留类,基本不用

      TreeMap

          键不可重复,值可重复

          底层二叉树

          能根据键排序,key必须实现Comparable接口或在构造TreeMap时传入自定义的Comparator

      SynchronizedMap

          线程安全

      ConcurrentHashMap

          线程安全

          由一个个segment(分段锁)组成,相当于一个segment数组,通过集成ReentrantLock来进行加锁,所以每次需要加锁的操作锁住的是一个segment,只要保证每一个segment是线程安全的,那么整个 ConcurrentHashMap就是线程安全的

    不经历风雨,怎能见彩虹?做一个快乐的程序员。
  • 相关阅读:
    ASP.NET AJAX入门系列(1):概述
    ASP.NET中常用的文件上传下载方法
    Asp.net中DataBinder.Eval用法的总结
    ASP.NET AJAX入门系列(6):UpdateProgress控件简单介绍
    ASP.NET AJAX入门系列(8):自定义异常处理
    Javascrip常用语句
    26个常用的方法优化 ASP.NET 的性能
    JavaScript倒计时组件
    jQuery.buildFragment源码分析
    jQuery.Callbacks源码解读
  • 原文地址:https://www.cnblogs.com/Mr-Elliot/p/13445287.html
Copyright © 2011-2022 走看看