大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java中的集合框架面試題總結

Java中的集合框架面試題總結

更新時間:2019-11-25 11:08:16 來源:動力節點 瀏覽2382次



Java常見面試題匯總.jpg

  一.List,Set,Map三者的區別及總結


  List:對付順序的好幫手


  List接口存儲一組不唯一(可以有多個元素引用相同的對象),有序的對象


  Set:注重獨一無二的性質


  不允許重復的集合。不會有多個元素引用相同的對象。


  Map:用Key來搜索的專家


  使用鍵值對存儲。Map會維護與Key有關聯的值。兩個Key可以引用相同的對象,但Key不能重復,典型的Key是String類型,但也可以是任何對象。


  二.Arraylist與LinkedList區別


  Arraylist底層使用的是數組(存讀數據效率高,插入刪除特定位置效率低),LinkedList底層使用的是雙向循環鏈表數據結構(插入,刪除效率特別高)。學過數據結構這門課后我們就知道采用鏈表存儲,插入,刪除元素時間復雜度不受元素位置的影響,都是近似O(1)而數組為近似O(n),因此當數據特別多,而且經常需要插入刪除元素時建議選用LinkedList.一般程序只用Arraylist就夠用了,因為一般數據量都不會蠻大,Arraylist是使用最多的集合類。


  三.ArrayList與Vector區別


  Vector類的所有方法都是同步的。可以由兩個線程安全地訪問一個Vector對象、但是一個線程訪問Vector,代碼要在同步操作上耗費大量的時間。Arraylist不是同步的,所以在不需要同步時建議使用Arraylist。

  

  四.HashMap和Hashtable的區別


  HashMap是非線程安全的,HashTable是線程安全的;HashTable內部的方法基本都經過synchronized修飾。


  因為線程安全的問題,HashMap要比HashTable效率高一點,HashTable基本被淘汰。


  HashMap允許有null值的存在,而在HashTable中put進的鍵值只要有一個null,直接拋出NullPointerException。


  Hashtable和HashMap有幾個主要的不同:線程安全以及速度。僅在你需要完全的線程安全的時候使用Hashtable,而如果你使用Java5或以上的話,請使用ConcurrentHashMap吧


  五.HashSet和HashMap區別

image.png

  六.HashMap和ConcurrentHashMap的區別


  ConcurrentHashMap對整個桶數組進行了分割分段(Segment),然后在每一個分段上都用lock鎖進行保護,相對于HashTable的synchronized鎖的粒度更精細了一些,并發性能更好,而HashMap沒有鎖機制,不是線程安全的。(JDK1.8之后ConcurrentHashMap啟用了一種全新的方式實現,利用CAS算法。)


  HashMap的鍵值對允許有null,但是ConCurrentHashMap都不允許。


  七.HashSet如何檢查重復


  當你把對象加入HashSet時,HashSet會先計算對象的hashcode值來判斷對象加入的位置,同時也會與其他加入的對象的hashcode值作比較,如果沒有相符的hashcode,HashSet會假設對象沒有重復出現。但是如果發現有相同hashcode值的對象,這時會調用equals()方法來檢查hashcode相等的對象是否真的相同。如果兩者相同,HashSet就不會讓加入操作成功。


  hashCode()與equals()的相關規定:


  如果兩個對象相等,則hashcode一定也是相同的


  兩個對象相等,對兩個equals方法返回true


  兩個對象有相同的hashcode值,它們也不一定是相等的


  綜上,equals方法被覆蓋過,則hashCode方法也必須被覆蓋


  hashCode()的默認行為是對堆上的對象產生獨特值。如果沒有重寫hashCode(),則該class的兩個對象無論如何都不會相等(即使這兩個對象指向相同的數據)。


  ==與equals的區別


  ==是判斷兩個變量或實例是不是指向同一個內存空間equals是判斷兩個變量或實例所指向的內存空間的值是不是相同


  ==是指對內存地址進行比較equals()是對字符串的內容進行比較3.==指引用是否相同equals()指的是值是否相同


  八.comparable和comparator的區別


  comparable接口實際上是出自java.lang包它有一個compareTo(Objectobj)方法用來排序


  comparator接口實際上是出自java.util包它有一個compare(Objectobj1,Objectobj2)方法用來排序


  一般我們需要對一個集合使用自定義排序時,我們就要重寫compareTo方法或compare方法,當我們需要對某一個集合實現兩種排序方式,比如一個song對象中的歌名和歌手名分別采用一種排序方法的話,我們可以重寫compareTo方法和使用自制的Comparator方法或者以兩個Comparator來實現歌名排序和歌星名排序,第二種代表我們只能使用兩個參數版的Collections.sort().


  1.Comparator定制排序


  2.重寫compareTo方法實現按年齡來排序


  九.如何對Object的list排序


  對objects數組進行排序,我們可以用Arrays.sort()方法


  對objects的集合進行排序,需要使用Collections.sort()方法


  十.如何實現數組與List的相互轉換


  List轉數組:toArray(arraylist.size()方法;數組轉List:Arrays的asList(a)方法


  十一.如何求ArrayList集合的交集并集差集去重復并集


  需要用到List接口中定義的幾個方法:


  addAll(Collection<?extendsE>c):按指定集合的Iterator返回的順序將指定集合中的所有元素追加到此列表的末尾實例代碼:


  retainAll(Collection<?>c):僅保留此列表中包含在指定集合中的元素。


  removeAll(Collection<?>c):從此列表中刪除指定集合中包含的所有元素。


  十二.集合框架底層數據結構總結


  1.Collection


  ①.List


  Arraylist:數組(查詢快,增刪慢線程不安全,效率高)


  Vector:數組(查詢快,增刪慢線程安全,效率低)


  LinkedList:鏈表(查詢慢,增刪快線程不安全,效率高)


  ②.Set


  HashSet(無序,唯一):哈希表或者叫散列集(hashtable)


  LinkedHashSet:鏈表和哈希表組成。由鏈表保證元素的排序,由哈希表證元素的唯一性


  TreeSet(有序,唯一):紅黑樹(自平衡的排序二叉樹。)


  2.Map


  HashMap:基于哈希表的Map接口實現(哈希表對鍵進行散列,Map結構即映射表存放鍵值對)


  LinkedHashMap:HashMap的基礎上加上了鏈表數據結構


  HashTable:哈希表


  TreeMap:紅黑樹(自平衡的排序二叉樹)


  十三.集合的選用


  主要根據集合的特點來選用,比如我們需要根據鍵值獲取到元素值時就選用Map接口下的集合,需要排序時選擇TreeMap,不需要排序時就選擇HashMap,需要保證線程安全就選用ConcurrentHashMap.當我們只需要存放元素值時,就選擇實現Collection接口的集合,需要保證元素唯一時選擇實現Set接口的集合比如TreeSet或HashSet,不需要就選擇實現List接口的比如ArrayList或LinkedList,然后再根據實現這些接口的集合的特點來選用。


      以上就是動力節點Java培訓機構小編介紹的“Java中的集合框架面試題總結”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。


相關推薦


最新最全java面試題及答案(初級到高級)


史上最全的中高級JAVA工程師面試題及答案匯總


Java高級開發工程師面試題


2019史上最全java面試題題庫大全800題


哪有資深java工程師面試題


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久最新免费视频 | 九九影视理论片在线播放 | 国内精品免费久久影院 | 玖玖中文 | 日韩精品中文字幕一区二区三区 | 久久久久久青草大香综合精品 | 欧美一级片免费看 | 日韩综合区 | 欧美日本一二三区 | 在线播放91 | 国产成人综合视频 | 一本色道久久爱88a 一本色道久久爱88av俺来也 | 久久久久免费观看 | 亚洲高清免费 | 国产香蕉视频 | 99精品国产高清一区二区麻豆 | 奇米777视频 | 私人影院aaaaa毛片 | 欧美精品国产一区二区三区 | 久久91精品久久91综合 | 操干干| 久久免费视频一区 | 久久精品久噜噜噜久久 | 中文字幕在线视频不卡 | 800玖玖爱在线观看香蕉 | 97影院网 | 米奇7777狠狠狠狠视频影院 | 久久66热re国产毛片基地 | 国产专区在线播放 | 天天操婷婷 | 久久久久国产精品四虎 | 不卡网站 | 久久另类| 天天操天天操天天操香蕉 | 成人小视频免费在线观看 | 久久精品国产999久久久 | 中文毛片| 黄色在线免费看 | 国产精品999视频 | 狠狠干天天 | 国产品精人成福利视频 |