1、概述算法
Java的集合體系,本質上是一個陳放數據的容器,像以前學過的數組也是陳放數據的容器,但在 Java 中數組的長度是固定的,使用起來沒那麼方便。集合提供了更增強大的功能,使用起來也更方便和快捷。集合體系中提供的方法的底層源代碼採用的也是優秀的高效率算法,其餘數據容器能操做的,集合都能操做,並且代碼更加簡潔,思路更加清晰,運行的效率更加高。所以,徹底掌握完集合。編程的技能會進一步提升。編程
2、集合體系數組
集合做爲一個容器,能夠存儲多個元素,可是因爲數據結構的不一樣,Java 提供了多種集合類,將集合類中共性的功能不斷向上抽取,最終造成了集合體繫結構。安全
Java中集合體系的關係圖:數據結構
Collection:多線程
Map:ide
3、Collection體系性能
一、Collection測試
二、Listspa
存儲特色:
重要實現類:
三、LinkedList
數據結構:
體系機構圖:
四、ArrayList
數據結構
體系結構圖
ArrayList VS LinkedList
ArrayList VS Vector
ArrayList 與 LinkedList 性能測試
咱們先來寫下面一段測試代碼:
/** * 自測下ArrayList與LinkedList在本地的機器上的性能 * * 主要是驗證 LinkedList是否是全部數據都是刪除和修改最快 * */ public class Topic1 { public static void main(String[] args) { List<Integer> list1 = new ArrayList<>(); long start = System.currentTimeMillis(); for (int i=0;i<=10000;i++){ list1.add(i); } long end = System.currentTimeMillis(); System.out.println("arraylist time:" + (end - start)); List<Integer> list2 = new LinkedList<>(); long start1 = System.currentTimeMillis(); for (int i=0;i<=10000;i++){ list2.add(i); } long end1 = System.currentTimeMillis(); System.out.println("linkedList time:" + (end1 - start1)); }
咱們分別測試往 ArrayList 和 LinkedList 中添加 1萬、10萬、80萬、100萬條數據,查看其執行時間,運行結果以下:
到80萬條數據時,ArrayList 用時已經比 LinkedList 少,只不過這時時間還比較接近。
以上結果分別表明1萬、10萬、80萬、100萬條數據的測試結果,到100萬條數據時,ArrayList 所用時間遠遠少於 LinkedList。
因此,咱們說LinkedList適合插入和刪除比較頻繁的場景是不許確的,和數據量的大小有關。
4、Set
存儲特色:
重要實現類:
一、HashSet
數據結構:
體系結構圖:
二、LinkedHashSet
數據結構:
體系結構圖:
5、Map
重要實現類
Map體系結構圖
未完待續。。。