站長資訊網
        最全最豐富的資訊網站

        2020全新Java面試題——容器(二)

        2020全新Java面試題——容器(二)

        1、說一下 HashMap 的實現原理?

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

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

        (推薦教程:java快速入門)

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

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

        2、說一下 HashSet 的實現原理?

        HashSet底層由HashMap實現

        HashSet的值存放于HashMap的key上

        HashMap的value統一為PRESENT

        (相關學習:java常見面試題)

        3、ArrayList 和 LinkedList 的區別是什么?

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

        4、如何實現數組和 List 之間的轉換?

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

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

        5、ArrayList 和 Vector 的區別是什么?

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

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

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

        相關視頻教程推薦:java視頻教程

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国内精品99亚洲免费高清| 中文字幕乱码中文乱码51精品| 黑人巨茎精品欧美一区二区 | 国产亚洲美女精品久久久久狼 | 91久久精品91久久性色| 最新国产乱人伦偷精品免费网站| 国产区精品福利在线观看精品| jiucao在线观看精品| 嫖妓丰满肥熟妇在线精品| 日韩精品一区二区三区在线观看| 国产精品偷伦视频免费观看了| 欧美精品国产精品| 国产精品福利在线观看| 国产乱人伦偷精品视频免下载| 一夲道无码人妻精品一区二区| 欧美精品91欧美日韩操| 精品久久久无码中文字幕天天| 91亚洲精品自在在线观看| 久久99精品久久久久久| 999国内精品永久免费视频| 久久99精品久久久久久久久久| 亚洲精品国产av成拍色拍| 亚洲国产精品激情在线观看 | 国产精品无码素人福利不卡| 人精品影院| 国产乱子伦精品免费视频 | 欧美精品亚洲精品日韩1818| 岛国精品一区免费视频在线观看| 日韩精品无码一区二区中文字幕 | 亚洲精品成人在线| 久久无码精品一区二区三区| 国内精品久久久久久麻豆| 国产成人精品综合在线观看 | 国产精品成| 国产成人精品cao在线| 国产精品.XX视频.XXTV| 国产精品无码一区二区在线| 国内精品久久久久久久coent | 国产精品成人小电影在线观看| 99在线精品免费视频| 国产成人精品福利网站在线观看 |