91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java最常見的容器面試題有哪些

發布時間:2021-11-30 13:56:49 來源:億速云 閱讀:157 作者:iii 欄目:大數據

這篇文章主要講解了“Java最常見的容器面試題有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java最常見的容器面試題有哪些”吧!

容器

18. java 容器都有哪些?

常用容器的圖錄:

Java最常見的容器面試題有哪些
19. Collection 和 Collections 有什么區別?
  • java.util.Collection 是一個集合接口(集合類的一個頂級接口)。它提供了對集合對象進行基本操作的通用接口方法。Collection接口在Java 類庫中有很多具體的實現。Collection接口的意義是為各種具體的集合提供了最大化的統一操作方式,其直接繼承接口有List與Set。

  • Collections則是集合類的一個工具類/幫助類,其中提供了一系列靜態方法,用于對集合中元素進行排序、搜索以及線程安全等各種操作。


20. List、Set、Map 之間的區別是什么?

Java最常見的容器面試題有哪些

21. HashMap 和 Hashtable 有什么區別?

  • hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。

  • hashTable同步的,而HashMap是非同步的,效率上比hashTable要高。

  • hashMap允許空鍵值,而hashTable不允許。

22. 如何決定使用 HashMap 還是 TreeMap?

對于在Map中插入、刪除和定位元素這類操作,HashMap是最好的選擇。然而,假如你需要對一個有序的key集合進行遍歷,TreeMap是更好的選擇。基于你的collection的大小,也許向HashMap中添加元素會更快,將map換為TreeMap進行有序key的遍歷。

23. 說一下 HashMap 的實現原理?

HashMap概述:HashMap是基于哈希表的Map接口的非同步實現。此實現提供所有可選的映射操作,并允許使用null值和null鍵。此類不保證映射的順序,特別是它不保證該順序恒久不變。 

HashMap的數據結構:在java編程語言中,最基本的結構就是兩種,一個是數組,另外一個是模擬指針(引用),所有的數據結構都可以用這兩個基本結構來構造的,HashMap也不例外。HashMap實際上是一個“鏈表散列”的數據結構,即數組和鏈表的結合體。

當我們往Hashmap中put元素時,首先根據key的hashcode重新計算hash值,根絕hash值得到這個元素在數組中的位置(下標),如果該數組在該位置上已經存放了其他元素,那么在這個位置上的元素將以鏈表的形式存放,新加入的放在鏈頭,最先加入的放入鏈尾.如果數組中該位置沒有元素,就直接將該元素放到數組的該位置上。

需要注意Jdk 1.8中對HashMap的實現做了優化,當鏈表中的節點數據超過八個之后,該鏈表會轉為紅黑樹來提高查詢效率,從原來的O(n)到O(logn)

24. 說一下 HashSet 的實現原理?

  • HashSet底層由HashMap實現

  • HashSet的值存放于HashMap的key上

  • HashMap的value統一為PRESENT

25. ArrayList 和 LinkedList 的區別是什么?

最明顯的區別是 ArrrayList底層的數據結構是數組,支持隨機訪問,而 LinkedList 的底層數據結構是雙向循環鏈表,不支持隨機訪問。使用下標訪問一個元素,ArrayList 的時間復雜度是 O(1),而 LinkedList 是 O(n)。

26. 如何實現數組和 List 之間的轉換?

  • List轉換成為數組:調用ArrayList的toArray方法。

  • 數組轉換成為List:調用Arrays的asList方法。


27. ArrayList 和 Vector 的區別是什么?

  • Vector是同步的,而ArrayList不是。然而,如果你尋求在迭代的時候對列表進行改變,你應該使用CopyOnWriteArrayList。 

  • ArrayList比Vector快,它因為有同步,不會過載。 

  • ArrayList更加通用,因為我們可以使用Collections工具類輕易地獲取同步列表和只讀列表。

28. Array 和 ArrayList 有何區別?

  • Array可以容納基本類型和對象,而ArrayList只能容納對象。 

  • Array是指定大小后不可變的,而ArrayList大小是可變的。 

  • Array沒有提供ArrayList那么多功能,比如addAll、removeAll和iterator等。

29. 在 Queue 中 poll()和 remove()有什么區別?

poll() 和 remove() 都是從隊列中取出一個元素,但是 poll() 在獲取元素失敗的時候會返回空,但是 remove() 失敗的時候會拋出異常。

30. 哪些集合類是線程安全的?

  • vector:就比arraylist多了個同步化機制(線程安全),因為效率較低,現在已經不太建議使用。在web應用中,特別是前臺頁面,往往效率(頁面響應速度)是優先考慮的。

  • statck:堆棧類,先進后出。

  • hashtable:就比hashmap多了個線程安全。

  • enumeration:枚舉,相當于迭代器。

31. 迭代器 Iterator 是什么?

迭代器是一種設計模式,它是一個對象,它可以遍歷并選擇序列中的對象,而開發人員不需要了解該序列的底層結構。迭代器通常被稱為“輕量級”對象,因為創建它的代價小。

32. Iterator 怎么使用?有什么特點?

Java中的Iterator功能比較簡單,并且只能單向移動:

(1) 使用方法iterator()要求容器返回一個Iterator。第一次調用Iterator的next()方法時,它返回序列的第一個元素。注意:iterator()方法是java.lang.Iterable接口,被Collection繼承。

(2) 使用next()獲得序列中的下一個元素。

(3) 使用hasNext()檢查序列中是否還有元素。

(4) 使用remove()將迭代器新返回的元素刪除。

Iterator是Java迭代器最簡單的實現,為List設計的ListIterator具有更多的功能,它可以從兩個方向遍歷List,也可以從List中插入和刪除元素。


33. Iterator 和 ListIterator 有什么區別?

  • Iterator可用來遍歷Set和List集合,但是ListIterator只能用來遍歷List。 

  • Iterator對集合只能是前向遍歷,ListIterator既可以前向也可以后向。 

  • ListIterator實現了Iterator接口,并包含其他的功能,比如:增加元素,替換元素,獲取前一個和后一個元素的索引,等等。

感謝各位的閱讀,以上就是“Java最常見的容器面試題有哪些”的內容了,經過本文的學習后,相信大家對Java最常見的容器面試題有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平南县| 安多县| 志丹县| 通道| 浦江县| 普宁市| 英山县| 绥中县| 邮箱| 夏河县| 邹城市| 和龙市| 大竹县| 莱西市| 深圳市| 宜川县| 罗山县| 阿拉善右旗| 永州市| 崇明县| 潍坊市| 连南| 呼和浩特市| 长汀县| 祁阳县| 闽侯县| 都匀市| 松桃| 巴青县| 台江县| 民勤县| 彭山县| 宣威市| 达州市| 陇南市| 阿城市| 隆昌县| 崇礼县| 湖南省| 屯门区| 黄山市|