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

        java經典面試題集錦(七)

        java經典面試題集錦(七)

        一、說一下ArrayList 和 Vector 的區別

        (更過面試題推薦:java面試題)

        1、同步性:Vector是線程安全的,用synchronized實現線程安全,而ArrayList是線程不安全的,如果只有一個線程會訪問到集合,那最好使用ArrayList,因為它不考慮線程安全,效率會高些;

        如果有多個線程會訪問到集合,那最好是使用Vector,因為不需要我們再去考慮和編寫線程安全的代碼。

        2、數據容量增長:二者都有一個初始容量大小,采用線性連續存儲空間,當存儲的元素的個數超過了容量時,就需要增加二者的存儲空間,Vector增長原來的一倍,ArrayList增加原來的0.5倍。

        二、為什么ArrayList線程不安全

        對ArrayList進行添加元素的操作的時候是分兩個步驟進行的,即第一步先在object[size]的位置上存放需要添加的元素;第二步將size的值增加1。

        由于這個過程在多線程的環境下是不能保證具有原子性的,因此ArrayList在多線程的環境下是線程不安全的。

        (相關教程推薦:java入門教程)

        三、HashMap、LinkedHashMap、TreeMap三者之間的區別是什么?

        1、HashMap是一個最常用的Map,它根據鍵的hashCode值存儲數據,根據鍵可以直接獲取它的值,具有很快的訪問速度。HashMap最多只允許一條記錄的鍵為null,不允許多條記錄的值為null。

        HashMap不支持線程的同步,即任一時刻可以有多個線程同時寫HashMap,可能會導致數據的不一致。如果需要同步,可以用Collections.synchronizedMap(HashMap map)方法使HashMap具有同步的能力。

        2、Hashtable與HashMap類似,不同的是:它不允許記錄的鍵或者值為空;它支持線程的同步,即任一時刻只有一個線程能寫Hashtable,然而,這也導致了Hashtable在寫入時會比較慢。

        3、LinkedHashMap保存了記錄的插入順序,在用Iteraor遍歷LinkedHashMap時,先得到的記錄肯定是先插入的。在遍歷的時候會比HashMap慢。有HashMap的全部特性。

        4、TreeMap能夠把它保存的記錄根據鍵排序,默認是按升序排序,也可以指定排序的比較器。當用Iteraor遍歷TreeMap時,得到的記錄是排過序的。TreeMap的鍵和值都不能為空。

        四、如何去掉一個 Vector 集合中重復的元素?

        通過Vector.contains()方法判斷是否包含該元素,如果沒有包含就添加到新的集合當中,適用于數據較小的情況下。

        還有一種簡單的方式,遍歷Vector,放入set、SortdSet、HashSet等。

        (視頻教程推薦:java視頻教程)

        五、List、Map、Set 三個接口,在存取元素時各有什么特點?

        1、Set里面不允許有重復的元素

        存元素:

        add方法有一個boolean的返回值,當集合中沒有某個元素,此時add方法可成功加入該元素時,則返回true;當集合含有與某個元素equals相等的元素時,此時add方法無法加入該元素,返回結果為false。

        取元素:

        沒法說取第幾個,只能以Iterator接口取得所有的元素,再逐一遍歷各個元素。

        2、List表示有先后順序的集合

        存元素:

        多次調用add(Object)方法時,每次加入的對象按先來后到的順序排序,也可以插隊,即調用add(int index,Object)方法,就可以指定當前對象在集合中的存放位置。

        取元素:

        方法1:Iterator接口取得所有,逐一遍歷各個元素。

        方法2:調用get(index i)來明確說明取第幾個。使用此接口能夠精確的控制每個元素插入的位置。用戶能夠使用索引(元素在List中的位置,類似于數組下標)來訪問List中的元素,這類似于Java的數組。

        3、Map是雙列的集合

        存元素:

        用put方法,put(obj key,obj value),每次存儲時,要存儲一對key/value,不能存儲重復的key,這個重復的規則也是按equals比較相等。

        取元素:

        用get(Object key)方法根據key獲得相應的value。也可以獲得所有的key的集合,還可以獲得所有的value的集合,還可以獲得key和value組合成的Map.Entry對象的集合。

        List以特定次序來持有元素,可有重復元素;Set 無法擁有重復元素,內部排序;Map 保存key-value值,value可多值。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 精品人妻人人做人人爽| 四虎永久在线精品免费一区二区| 99久re热视频这里只有精品6 | 国产欧美日本精品| 国产国产精品人在线视| 伊在人亚洲香蕉精品区麻豆| 国产精品无码v在线观看| 精品久久久久久亚洲| 国产麻豆精品久久一二三| 一本一本久久A久久综合精品| 国产精品网址在线观看你懂的| 国产精品高清一区二区三区不卡 | 久久99热狠狠色精品一区| 久久国产精品一国产精品金尊| 亚洲精品视频在线看| 国产午夜精品一区二区三区小说 | 久久精品国产一区二区电影| 99久久精品无码一区二区毛片 | 国产精品日韩欧美一区二区三区 | 国产精品偷窥熟女精品视频| 2024最新国产精品一区| 久久99国产精品久久久| 国产精品欧美亚洲韩国日本| 97久久超碰国产精品旧版| 国产精品美女久久久m| 国产探花在线精品一区二区| 亚洲国产精品嫩草影院在线观看 | 久久精品国产亚洲av高清漫画| 中文字幕一区二区三区日韩精品| 久久国产精品无码网站| 久久99精品久久久久久不卡 | 国产亚洲精品a在线观看| 国产精品免费一区二区三区| 91久久精品国产成人久久| 中文字幕亚洲精品| 国产999精品久久久久久| 国产福利电影一区二区三区,欧美国产成人精品一 | 无码精品一区二区三区免费视频| 国产精品嫩草影院一二三区入口| 精品国产免费一区二区三区香蕉 | 国产精品成熟老女人视频|