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

        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號
        主站蜘蛛池模板: 国产美女久久精品香蕉69| 国产成人久久精品区一区二区| 精品久久久久久久久午夜福利| 999久久久国产精品| 精品人妻人人做人人爽| 精品一久久香蕉国产线看播放| 久久99国产精品99久久| 久久国产热精品波多野结衣AV| 久久精品夜色噜噜亚洲A∨| 51国偷自产精品一区在线视频| 国产精品色内内在线播放| 亚洲精品一级无码鲁丝片| 欧美亚洲日本久久精品| 久久国产精品偷99| 国产亚洲精品精品国产亚洲综合 | 亚洲国产另类久久久精品| 久久se精品一区精品二区国产| 99国内精品久久久久久久| 久久久国产精品网站| aaa级精品久久久国产片| 国产产无码乱码精品久久鸭 | 精品少妇一区二区三区在线 | 日韩精品无码一本二本三本 | 久久精品国产免费| 精品999久久久久久中文字幕| 91精品国产综合久久久久久| 国产精品对白交换视频| 国产乱码精品一区二区三区中文| 久久精品亚洲中文字幕无码麻豆 | 日韩人妻精品无码一区二区三区 | 在线中文字幕精品第5页| 亚洲国产精品狼友中文久久久 | 四虎国产精品成人免费久久| 久久精品国产精品亚洲下载| 精品久久久无码中文字幕天天| 国产日韩高清三级精品人成| 精品欧美一区二区在线观看| 毛片a精品**国产| 亚洲精品无码午夜福利中文字幕 | 91精品在线看| 久久国产精品-国产精品|