java中的資料結構(集合|容器),java資料結構

來源:互聯網
上載者:User

java中的資料結構(集合|容器),java資料結構

  對java中的資料結構做一個小小的個人總結,雖然還沒有到研究透徹jdk源碼的地步。首先、java中為何需要集合的出現?什麼需求導致。我想對於物件導向來說,對象適用於描述任何事物,所以為了方便對於對象的操作、儲存就出現了集合,集合應該是儲存物件最常用的一種方式了,相對於數組更靈活,可變長度。同時集合也只能儲存物件不能使基礎資料型別 (Elementary Data Type)。

  集合架構分為兩個派系Collection和Map而每一種集合類型都是基於特定的資料結構,Collection介面繼承了Iterable介面所以可以使用Iterable介面的iterator()方法了傳回值是一個Iterator介面類型這也就是Collection集合中的迭代器,迭代器就是一種集合元素的去除方式可以直接存取集合中的元素,它定義在集合內部就是為了更加方便的取出集合中的元素它可以取出和刪除集合中的元素(next(),remove())並且在使用迭代器操作資料的時候不可以使用集合本身的方法對集合進行操作,因為迭代器已經定義好了對於集合的後續操作迭代器操作的就不是之前定義好的集合了,這就衝突了。而它的子介面ListIterator可以對集合中的元素進行增刪改查操作(其實就是操作的集合中儲存的對象引用,並不是真正對象本身,因為集合中儲存的就是對象的引用地址)。

  Collection介面又分為List和Set介面,對應的List介面比較常用的就是ArrayList和LinkedList兩個實作類別了。ArrayList類的底層資料結構(就是資料存放的方式)就是一個數組介面,它是有序的帶有角標索引的並且是可以重複的而LinkedList類底層是一個鏈表資料結構,他們判斷元素是否相同都是使用的equals方法相對於ArrayList它對於集合資料的增刪操作資料是更快的因為只需要首尾關係調整,而對於ArrayList則需要重新調整索引,所以對於大資料量的增刪操作還是LinkedList效率高一些而查詢操作ArrayList更快他們都是現成不同步的(ArrayList取代了Vector)。Set介面常用的就是HashSet和TreeSet兩個類,HashSet底層是一個雜湊表的介面它無序、不可重複、線程不同步,而判斷元素是否相同使用的就是hashCode方法返回是否為0如果為0還會判斷equals方法看返回是否為true。TreeSet底層是一個二叉樹結構是一個有序的不可重複也是線程不同步的集合它保證資料唯一性的方式就是compareTo方法是否返回0,TreeSet排序集合有兩種方式:1、讓儲存的元素本身具備比較性也就是實現Comparable介面覆蓋compareTo方法。2、自訂比較子實現Comparator介面自訂compareTo方法然後把該比較子作為參數出入TreeSet的構造方法中是TreeSet初始化時就具備了比較性。

  Map介面是和Collection介面平級的介面,Map介面儲存的是一個key-value形式的映射關係所以對於需要儲存映射關係的資料首選Map,Map常用的類型有HashMap和TreeMap,HashMap底層資料結構也是雜湊表是可以使用null儲存的也是線程不同步的這也就取代了HashTable的線程不同步,不可儲存null值、TreeMap底層也是二叉樹資料結構,同樣的Map的取出資料的方式都是使用entrySet()方法返回Set集合再使用迭代器取出或者是增強for迴圈(實現了Iterable介面的集合都可以使用foreach進行迴圈),entrySet返回的映射關係就是一個Map.Entry類型因為Entry其實就是定義在Map中,為什麼要這麼做呢?因為只有有了Map集合,有了索引值對才有索引值對的映射關係,關係屬於集合中的內部事物這個事有直接存取集合中的元素。實際應用中我想更多的是map的嵌套。

  工具類(Collections、Arrays)Collections集合工具類就是一個操作結合的專門工具類裡面定義的都是靜態方法,可以對於List集合進行各種排序二分尋找等(類比字串操作)還可以把線程不安全的轉成安全執行緒的,同樣的Arrays是一個運算元組的工具類裡面定義的也都是靜態方法用於數組的各種操作(toString列印數組元素、asList轉成list等)

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.