<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                **1. Java 集合都有哪些?** Java 容器分為 Collection 和 Map 兩大類,其下又有很多子類,如下所 Collection List * -ArrayList * LinkedList * Vector * Stack Set * HashSet * LinkedHashSet * TreeSet Map * HashMap * * LinkedHashMap * TreeMap * ConcurrentHashMap ***** **2.Collection 和 Collections 有什么區別?** - Collection 是一個集合接口,它提供了對集合對象進行基本操作的通用接口方法,所有集合都是它的子類,比如 List、Set 等。 - Collections 是一個包裝類,包含了很多靜態方法,不能被實例化,就像一個工具類,比如提供的排序方法: Collections. sort(list)。 ***** **3. List、Set、Map 之間的區別是什么?** List、Set、Map 的區別主要體現在兩個方面:元素是否有序、是否允許元素重復。 ![](https://img.kancloud.cn/07/71/07718fe0145f280e106e30fec18ff9a0_776x247.png) ***** **4. HashMap 和 Hashtable 有什么區別?** - 存儲:HashMap 允許 key 和 value 為 null,而 Hashtable 不允許。 - 線程安全:Hashtable 是線程安全的,而 HashMap 是非線程安全的。 - 推薦使用:在 Hashtable 的類注釋可以看到,Hashtable 是保留類不建議使用,推薦在單線程環境下使用 HashMap 替代,如果需要多線程使用則用 ConcurrentHashMap 替代。 ***** **5. 如何決定使用 HashMap 還是 TreeMap?** 對于在 Map 中插入、刪除、定位一個元素這類操作,HashMap 是最好的選擇,因為相對而言 HashMap 的插入會更快,但如果你要對一個 key 集合進行有序的遍歷,那 TreeMap 是更好的選擇。 ***** **6. 說一下 HashMap 的實現原理?** HashMap 基于 Hash 算法實現的,我們通過 put(key,value)存儲,get(key)來獲取。當傳入 key 時,HashMap 會根據 key. hashCode() 計算出 hash 值,根據 hash 值將 value 保存在 bucket 里。當計算出的 hash 值相同時,我們稱之為 hash 沖突,HashMap 的做法是用鏈表和紅黑樹存儲相同 hash 值的 value。當 hash 沖突的個數比較少時,使用鏈表否則使用紅黑樹。 **7. 說一下 HashSet 的實現原理?** HashSet 是基于 HashMap 實現的,HashSet 底層使用 HashMap 來保存所有元素,因此 HashSet 的實現比較簡單,相關 HashSet 的操作,基本上都是直接調用底層 HashMap 的相關方法來完成,HashSet 不允許重復的值。 **8. ArrayList 和 LinkedList 的區別是什么?** - 數據結構實現:ArrayList 是動態數組的數據結構實現,而 LinkedList 是雙向鏈表的數據結構實現。 - 隨機訪問效率:ArrayList 比 LinkedList 在隨機訪問的時候效率要高,因為 LinkedList 是線性的數據存儲方式,所以需要移動指針從前往后依次查找。 - 增加和刪除效率:在非首尾的增加和刪除操作,LinkedList 要比 ArrayList 效率要高,因為 ArrayList 增刪操作要影響數組內的其他數據的下標。 綜合來說,在需要頻繁讀取集合中的元素時,更推薦使用 ArrayList,而在插入和刪除操作較多時,更推薦使用 LinkedList。 ***** **9. 如何實現數組和 List 之間的轉換?** 數組轉 List:使用 Arrays. asList(array) 進行轉換。 List 轉數組:使用 List 自帶的 toArray() 方法。 ***** **10.ArrayList 和 Vector 的區別是什么?** -線程安全:Vector 使用了 Synchronized 來實現線程同步,是線程安全的,而 ArrayList 是非線程安全的。 -性能:ArrayList 在性能方面要優于 Vector。 -擴容:ArrayList 和 Vector 都會根據實際的需要動態的調整容量,只不過在 Vector 擴容每次會增加 1 倍,而 ArrayList 只會增加 50%。 ***** **11. Array 和 ArrayList 有何區別?** - Array 可以存儲基本數據類型和對象(類型需要一致,比如同int[]),ArrayList 只能存儲對象,內部裝箱為Object。 - Array 是指定固定大小的,而 ArrayList 大小是自動擴展的。 - Array 內置方法沒有 ArrayList 多,比如 addAll、removeAll、iteration 等方法只有 ArrayList 有。 ***** **12. 在 Queue 中 poll()和 remove()有什么區別?** 相同點:都是返回第一個元素,并在隊列中刪除返回的對象。 不同點:如果沒有元素 poll()會返回 null,而 remove()會直接拋出 NoSuchElementException 異常。 ***** **13. 哪些集合類是線程安全的?** Vector、Hashtable、Stack 都是線程安全的,而像 HashMap 則是非線程安全的,不過在 JDK 1.5 之后隨著 Java. util. concurrent 并發包的出現,它們也有了自己對應的線程安全類,比如 HashMap 對應的線程安全類就是 ConcurrentHashMap。 ***** **14. 迭代器 Iterator 是什么?** Iterator 接口提供遍歷任何 Collection 的接口。我們可以從一個 Collection 中使用迭代器方法來獲取迭代器實例。迭代器取代了 Java 集合框架中的 Enumeration,迭代器允許調用者在迭代過程中移除元素。 ***** **15. Iterator 怎么使用?有什么特點?** 使用 ~~~ List<String> list = new ArrayList<>(); list.add("11"); list.add("22"); Iterator<String> it = list.iterator(); while(it. hasNext()){ String obj = it. next(); System.out.println(obj); } ~~~ Iterator 的特點是更加安全,因為它可以確保,在當前遍歷的集合元素被更改的時候,就會拋出 ConcurrentModificationException 異常。 ***** **16. Iterator 和 ListIterator 有什么區別?** - Iterator 可以遍歷 Set 和 List 集合,而 ListIterator 只能遍歷 List。 - Iterator 只能單向遍歷,而 ListIterator 可以雙向遍歷(向前/后遍歷)。 - ListIterator 從 Iterator 接口繼承,然后添加了一些額外的功能,比如添加一個元素、替換一個元素、獲取前面或后面元素的索引位置。 **17. 怎么確保一個集合不能被修改?** 可以使用 Collections. unmodifiableCollection(Collection c) 方法來創建一個只讀集合,這樣改變集合的任何操作都會拋出 Java. lang. UnsupportedOperationException 異常。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看