原创 Java容器——ArrayList VS LinkedList(Java8) 性能比較

ArrayList和LinkedList都繼承自List, 內在實現機制有所不同,關於區別方面已經有很多優秀的文章進行了介紹。本文從實踐角度出發,對比兩種List在不同操作中的性能,便於讀者在特定場景中參考選型。由於電腦配置,JDK版本,

原创 JAVA容器——Stack(JAVA8) 源碼解析

    一 棧簡介     棧是一種常用的線性抽象數據結構,在計算機中應用極爲廣泛。棧有兩個爲人熟知的特性,一是進出棧的順序是先進後出(FILO),即最先進棧的數據最後出棧,當然相對的也有後進先出(LIFO),最後進棧的數據先出棧。另一個

原创 Java容器——Hashtable(Java8)源碼解析

    Hashtable是一種鍵值對型Java存儲容器,自JDK1.0沿用至今。經常有將Hashtable和HashMap進行比較的例子和文章,實際上早期二者的實現原理基本一致,而HashTable的操作方法都進行了加鎖,因而線程安全。

原创 Java容器——Vector(Java8)源碼解析

    Vector是Java早期實現的容器,自JDK1.0就存在。目前在日常使用中逐漸被ArrayList或同步的ConcurrentLinkedQueue等代替,不過在早期的代碼中和類庫中,仍經常能見到Vector,因此有必要對其的組

原创 Java容器——ArrayList(Java8 )源碼解析

    ArrayList是一種常用List類型實現,也是Java集合中的的常用類型,以遍歷查詢性能優異著稱,繼承關係如下:     可見ArrayList實現了Cloneable,Serializable,RandomAcess和Li

原创 Java容器——LinkedList(Java8 )源碼解析

    LinkedList繼承自List,是一種常用的容器。雖然同爲ArrayList和LinkedList同爲List,但二者的實現方式完全不同,導致二者的性能和使用場景都有較大的不同,本文將從源碼角度解析LinkedList。   

原创 深入JVM垃圾回收——垃圾回收算法

目錄 前言 垃圾產生 垃圾定位 引用計數 可達分析 垃圾回收 標記-清除算法 複製清除算法 標記-整理算法 算法對比 前言 Java虛擬機規範中提到:"Java堆中存儲的對象由自動內存管理系統(垃圾回收器)負責收集,不可以被顯式銷燬"。這

原创 Java容器——HashSet(Java8)源碼解析

 HashSet是一種元素集合,實現了Set接口,是一種快速的,去重的集合對象,繼承關係見圖1所示。                                                                    

原创 Java容器——HashMap(Java8)源碼解析(一)

一 概述 HashMap是最常用的Java數據結構之一,是一個具有常數級別的存取速率的高效容器。相對於List,Set等,結構相對複雜,本篇我們先對HashMap的做一個基本說明,對組成元素和構造方法進行介紹。 二 繼承關係 首先看Has

原创 Java容器——HashMap(Java8)源碼解析(二)

在前文中介紹了HashMap中的重要元素,現在萬事俱備,需要刨根問底看看實現了。HashMap的增刪改查,都離不開元素查找。查找分兩部分,一是確定元素在table中的下標,二是確定以指定下標元素爲首的具體位置。可以抽象理解爲二維數組,第一

原创 JAVA容器——Stack(JAVA9) 源碼解析

    一 棧簡介     棧是一種常用的線性抽象數據結構,在計算機中應用極爲廣泛。棧有兩個爲人熟知的特性,一是進出棧的順序是先進後出(FILO),即最先進棧的數據最後出棧,當然相對的也有後進先出(LIFO),最後進棧的數據先出棧。另一個

原创 Java容器——LinkedList(Java9 )源碼解析

    LinkedList繼承自List,是一種常用的容器。雖然同爲ArrayList和LinkedList同爲List,但二者的實現方式完全不同,導致二者的性能和使用場景都有較大的不同,本文將從源碼角度解析LinkedList。   

原创 Java容器——ArrayList(Java9 )源碼解析

    ArrayList是一種常用List類型實現,也是Java集合中的的常用類型,以遍歷查詢性能優異著稱,繼承關係如下:     可見ArrayList實現了Cloneable,Serializable,RandomAcess和Li

原创 Java容器——Vector(Java9)源碼解析

    Vector是Java早期實現的容器,自JDK1.0就存在。目前在日常使用中逐漸被ArrayList或同步的ConcurrentLinkedQueue等代替,不過在早期的代碼中和類庫中,仍經常能見到Vector,因此有必要對其的組

原创 Java容器——Hashtable(Java9)源碼解析

    Hashtable是一種鍵值對型Java存儲容器,自JDK1.0沿用至今。經常有將Hashtable和HashMap進行比較的例子和文章,實際上早期二者的實現原理基本一致,而HashTable的操作方法都進行了加鎖,因而線程安全。