原创 命令設計模式-設計模式
1.代碼實例: package tv; //執行命令的接口 public interface Command { void execute(); } package tv; //開機命令ConcreteCommand publ
原创 工廠方法模式-設計模式
1.OO原則: (1)OCP:開閉原則Open-Closed Principle,一個軟件的實體對擴展開放,對修改關閉。即對一個已有的軟件,如果需要擴展,應當在不需要修改已有代碼的基礎上進行。 (2)DIP:依賴倒
原创 Java集合源碼剖析-Java集合框架
Hi 大家好,我是清和二七,今天我們來聊聊《Java集合源碼剖析-Java集合框架》 一.層次關係 Java集合工具包位於Java.util包下,包含了很多常用的數據結構,如數組、鏈表、棧、隊列、集合、哈希表等。學習Ja
原创 Java集合源碼剖析-LinkedList源碼剖析
一.概述 LinkedList是基於雙向循環鏈表實現的,除了可以當做鏈表來操作外,它還可以當做棧、隊列和雙端隊列來使用。 LinkedList同樣是非線程安全的,只在單線程下適合使用。 LinkedList實現了Seri
原创 Java集合源碼剖析-HashMap源碼剖析
一.概述 HashMap是基於哈希表實現的,每一個元素是一個key-value對,其內部通過單鏈表解決衝突問題,容量不足(超過了閥值)時,同樣會自動增長。 HashMap是非線程安全的,只是用於單線程環境下,多線程環境下可以採用c
原创 泛型
1.爲什麼需要泛型? 我們看下面一個例子: public class GenericTest { public static void main(String[] args) { List arrayList =
原创 Java集合源碼剖析-ArrayList源碼剖析
一.概述 ArrayList是基於數組實現的,是一個動態數組,其容量能自動增長。ArrayList不是線程安全的,只能用在單線程環境下,多線程環境下考慮Collections.synchronizedList(List l)函數返
原创 算法導論-圖算法Part3
一.分治策略1.理論介紹:2.基本步驟: 1分解:將原問題分解爲若干個規模較小,相互獨立,與原問題形式相同的子問題; 2解決:若子問題規模較小而容易被解決則直接解,否則遞歸地解各個子問題; 3合併:將各個子問題的解合併爲原問題的解;3
原创 Java集合源碼剖析-LinkedHashmap源碼剖析
一.概述 LinkedHashMap是HashMap的子類,與HashMap有着同樣的存儲結構,但它加入了一個雙向鏈表的頭結點,將所有put到LinkedHashmap的節點一一串成了一個雙向循環鏈表,因此它保留了節點插入的順序
原创 Comparable與Comparator分析
一.ComparableComparable可以認爲是一個內比較器,實現了Comparable接口的類有一個特點,就是這些類是可以和自己比較的,至於具體和另一個實現了Comparable接口的類如何比較,則
原创 Java集合源碼剖析-工具類
一.Collections工具類 概述: 1.Collections(注意不是Collection,而是Collections,多了一個s) 2.它是一個集合工具類 3.方法分類:常規操作(查找,最大,最小等)、排
原创 EnumSet-Enumeration
1.EnumSet 是一個專爲枚舉設計的集合類,EnumSet中的所有元素都必須是指定枚舉類型的枚舉值,該枚舉類型在創建EnumSet時顯式或隱式地指定。2.EnumSet的集合元素也是有序的,EnumSet以枚舉值在Enum類內的定義順
原创 Java集合源碼剖析-Hashtable源碼剖析
一.概述 Hashtable同樣是基於哈希表實現的,同樣每個元素是一個key-value對,其內部也是通過單鏈表解決衝突問題,容量不足(超過了閥值)時,同樣會自動增長。 Hashtable也是JDK1.0引入的類,是線
原创 模板方法
1.模板方法:定義一個操作中的算法骨架,而將一些步驟延遲到子類中。 模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟 處理某個流程的的代碼已經具備,但是其中某個結點的代碼暫時不能確定。 因此採用
原创 Java集合源碼剖析-Vector源碼剖析
一.概述 Vector也是基於數組實現的,是一個動態數組,其容量能自動增長。 Vector是JDK1.0引入了,它的很多實現方法都加入了同步語句,因此是線程安全的(其實也只是相對安全,有些時候還是要加入同步語句