java基礎(二):談談Java基本數據結構

數據結構是計算機存儲,組織數據的方式。數據結構是指相互之間存在一種或多種特定關係的數據元素的集合。一般狀況下,精心選擇的數據結構能夠帶來更高的運行或存儲效率。數據結構每每同高效的檢索算法和索引技術有關html

java中常見的幾種數據結構(也是初級工程師常見面試題)主要是一些常見的容器,它們主要來自於Collection和Map這2個集合;如下是2個集合的整體框架java

(1)Collection接口圖面試

(2)map接口圖算法

上述2個圖片分別來自於數組

www.cnblogs.com/nayitian/p/…安全

www.cnblogs.com/nayitian/p/…數據結構

下面我將每個接口或類進行詳細介紹,其中他們所擁有的方法就不介紹了,能夠自行查API,另外,不少方法也不會用到,常見的方法就那麼幾個。框架

1.Collction: 

Collection接口繼承自超級接口Iterator,是Collection層次結構中的根接口。Collection表示一組對象,這些對象也被稱爲Collection的元素。一些Collection容許有重複的元素(例如List),可是另外一些則不容許有重複的元素,便可爲無序的(如Set)。JDK不提供此接口的任何直接實現---它會提供更爲具體的子接口(如Set和List),這從上面的UML也能夠看出來。此接口用來傳遞Collection,並在須要最大廣泛性的地方操做這些Collection。其實現類的底層是由數組或者鏈表組成,數組是經過首地址+(元素長度*下標),即經過下標查詢的,所以查詢速度快,而增刪慢(在增刪的時候,數組須要總體的移動,因此慢);鏈表不維護序號,即鏈表不存在下標的概念,**因此查詢很慢(經過地址查詢的),而增刪快(直接經過地址刪掉某一個元素,其它元素不須要移動)   數組:查詢快,增刪慢;鏈表:查詢慢,增刪快性能

1.1.List:有序,可重複

  ArrayList :底層是數組結構,線程不安全。查詢快,增刪慢.net

  LinkedList :底層是鏈表結構,線程不安全。查詢慢,增刪快

  Vector:底層是數組結構,是線程安全的,因此效率很低,已經被ArrayList取代

1.2.Set :無序,不可重複

  HashSet類 及其實現類LinkedHashSet:底層是使用了哈希表來支持的,特色: 存取速度快,線程不安全,集合元素容許爲NULL

  SortedSet接口及其實現類TreeSet:若是元素具有天然順序 的特性,那麼就按照元素天然順序的特性進行排序存儲。

1.3.EnumSet

  EnumSet類是專爲枚舉類設計的集合類,EnumSet中的全部元素都必須是指定枚舉類型的枚舉值

2.Map

Map用於保存具備映射關係的數據,所以Map集合裏保存着兩組值,一組值用於保存Map裏的key,另一組用於保存Map裏的value,key和value都是能夠任意引用類型的數據。Map的key不容許重複,即同一個Map對象的任何兩個key經過equals方法比較老是返回false. 給key-value起個名字:Entry,表示一個鍵值對,對應Map的一個實體;把Entry放到集合set中就是一個Map 若是把Map全部value放在一塊兒來看,元素與元素之間能夠重複,每一個元素能夠根據索引來查找,至關於list集合,只是Map中的索引再也不使用整數值,而是以另一個對象做爲索引。若是須要從List集合中取出元素,須要提供該元素的數字索引。 若是須要從Map中取出元素,須要提供該元素的key索引,所以,Map也被稱爲字典。

常見的實現類:

2.1.HashMap:

  採用哈希表算法, 此時Map中的key不會保證添加的前後順序,key也不容許重複.key判斷重複的標準是: key1和key2是否equals爲true,而且與hashCode相等.其中實現類LinkedHashMap採用了鏈表和哈希表算法

2.2.TreeMap:

  sortedMap接口的實現類,採用紅黑樹算法,此時Map中的key會按照天然順序或定製排序進行排序,,key也不容許重複.key判斷重複的標準是: compareTo/compare的返回值是否爲0.

2.3.Hashtable:

採用哈希表算法,是HashMap的前身(相似於Vector是ArrayList的前身).打死不用. 在Java的集合框架以前,表示映射關係就使用Hashtable.全部的方法都使用synchronized修飾符,線程安全的,可是性能相對HashMap較低.其子類Properties要求key和value都是String類型.

本文摘自:

www.jianshu.com/p/b878a4e1c…

blog.csdn.net/qq_33440140…

www.cnblogs.com/nayitian/p/…

www.cnblogs.com/nayitian/p/…

www.cnblogs.com/dz-boss/p/1…

相關文章
相關標籤/搜索