原创 Java 集合框架一 :java.util包

這個專欄整理一下 Java 語言的集合框架。僅包含 java.util 包下面的類。java.util.concurrency 將用另一個專欄來寫。 Java 版本: Java 8 Java 集合的整體框圖如下:     後面幾篇文章做

原创 使用左連接和右連接代替全連接 2 (2 張表,值不唯一)

    在上篇文章中,我們的測試用表,沒一行都是唯一的,也就是沒有重複值,如果有重複值,結論會不會變呢? 2. 2 張表,值不唯的情況。 2.1 創建測試用表。 DROP TABLE IF EXISTS table1; DROP T

原创 使用左連接和右連接代替全連接 1 (2 張表,值唯一)

    MySQL 不支持 FULL OUTER JOIN,如果需要使用 FULL OUTER JOIN,可以使用 LEFT OUTER JOIN 和 RIGHT OUTER JOIN 來模擬。這篇文章研究怎樣使用 LEFT OUTER

原创 使用左連接和右連接代替全連接 3 (3 張表,值不唯一)(4張表)(統一結論)

在前兩篇文章中,我們都是使用的 2 張表,如果是 3 張表,結論會不會變呢?我們來試一下。 3. 3 張表,值不唯一的情況。 3.1 創建測試用表。 DROP TABLE IF EXISTS table1; CREATE TABLE

原创 TreeMap

TreeMap 通過紅黑樹實現,一般的讀寫操作都是 log(n) 的時間複雜度:  containsKey, get, put, remove。 來看一下 put 函數的源碼:     public V put(K key, V val

原创 RandomAccess

RandomAccess 只是一個標記,繼承這個接口的類,支持快速隨機訪問(時間複雜度爲O(1))。 一些通用算法,可以根據這個接口,知道相應的類支持隨機訪問還是順序訪問,根據這個信息來提升算法的性能。   參考鏈接: 1. https:

原创 NavigableMap

1. NavigableMap 繼承自 SortedMap,所以它的元素是有序的。 2. 在 SortedMap 基礎上,支持快速搜索符合條件的最近的元素。這裏條件主要是指 lower(>), floor(>=), ceiling(<),

原创 MySQL 和 PostgreSQL 字符串類型比較

1. MySQL:     1.1 CHAR(n)         1.1. 存儲固定長度(n)的字符串。n 範圍是 [0, 255]。n 的缺省值爲 1.         1.2. 當插入的字符串長度小於 n 時,MySQL 會在末尾補

原创 LinkedHashMap

LinkedHashMap 繼承自 HashMap,與 HashMap 相比,增加了一個功能:每個節點使用雙向鏈表鏈接起來,這樣就能保證節點的遍歷順序與插入順序一致。 這是 HashMap 的節點:     static class N

原创 NavigableSet

NavigableSet 繼承自 SortedSet,相比於 SortedSet,NavigableSet 多了以下幾類功能: 1. 直接獲取符合條件的最近的元素,這裏,條件主要是 lower(>)、 floor(>=)、 higher(

原创 ConcurrentHashMap

ConcurrentHashMap 在功能上與 HashTable 一致,都是線程安全的鍵值對容器。但是 ConcurrentHashMap 比 HashTable 有更好的併發性能: 1. HashTable 是同步的,也就是說,它的所

原创 Collections.synchronizedXxx

先來看一下集合類:                                           表 1 . Java Collection Implementations  以上 10 個Java 集合的實現類搜不是同步的。(類