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可多值。
以上是java經典面試題集錦(七)的詳細內容。更多資訊請關注PHP中文網其他相關文章!
熱AI工具
Undress AI Tool
免費脫衣圖片
Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片
AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。
Clothoff.io
AI脫衣器
Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!
熱門文章
熱工具
記事本++7.3.1
好用且免費的程式碼編輯器
SublimeText3漢化版
中文版,非常好用
禪工作室 13.0.1
強大的PHP整合開發環境
Dreamweaver CS6
視覺化網頁開發工具
SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)
撰寫PHP評論的提示
Jul 18, 2025 am 04:51 AM
寫好PHP註釋的關鍵在於明確目的與規範,註釋應解釋“為什麼”而非“做了什麼”,避免冗餘或過於簡單。 1.使用統一格式,如docblock(/*/)用於類、方法說明,提升可讀性與工具兼容性;2.強調邏輯背後的原因,如說明為何需手動輸出JS跳轉;3.在復雜代碼前添加總覽性說明,分步驟描述流程,幫助理解整體思路;4.合理使用TODO和FIXME標記待辦事項與問題,便於後續追踪與協作。好的註釋能降低溝通成本,提升代碼維護效率。
PHP開發環境設置
Jul 18, 2025 am 04:55 AM
第一步選擇集成環境包XAMPP或MAMP搭建本地服務器;第二步根據項目需求選擇合適的PHP版本並配置多版本切換;第三步選用VSCode或PhpStorm作為編輯器並搭配Xdebug進行調試;此外還需安裝Composer、PHP_CodeSniffer、PHPUnit等工具輔助開發。
PHP比較操作員
Jul 18, 2025 am 04:57 AM
PHP比較運算符需注意類型轉換問題。 1.使用==僅比較值,會進行類型轉換,如1=="1"為true;2.使用===需值與類型均相同,如1==="1"為false;3.大小比較可作用於數值和字符串,如"apple"
PHP評論語法
Jul 18, 2025 am 04:56 AM
PHP註釋有三種常用方式:單行註釋適合簡要說明代碼邏輯,如//或#用於當前行解釋;多行註釋/*...*/適合詳細描述函數或類的作用;文檔註釋DocBlock以/**開頭,為IDE提供提示信息。使用時應避免廢話、保持同步更新,並勿長期用註釋屏蔽代碼。
進行音頻/視頻處理
Jul 20, 2025 am 04:14 AM
音視頻處理的核心在於理解基本流程與優化方法。 1.其基本流程包括採集、編碼、傳輸、解碼和播放,每個環節均有技術難點;2.常見問題如音畫不同步、卡頓延遲、聲音噪音、畫面模糊等,可通過同步調整、編碼優化、降噪模塊、參數調節等方式解決;3.推薦使用FFmpeg、OpenCV、WebRTC、GStreamer等工具實現功能;4.性能管理方面應注重硬件加速、合理設置分辨率幀率、控制並發及內存洩漏問題。掌握這些關鍵點有助於提升開發效率和用戶體驗。
用塊評論記錄PHP
Jul 18, 2025 am 04:53 AM
寫好PHP塊註釋能提升代碼可讀性和維護性,應包含@param、@return、@throws等信息,並說明“為什麼”和“怎麼用”,避免無意義重複,保持與代碼同步更新,IDE可自動識別提示。
使用翻譯員立面在Laravel中進行定位。
Jul 21, 2025 am 01:06 AM
thetranslatorfacadeinlaravelisused forlocalization byfetchingTranslatingStringSandSwitchingLanguagesAtruntime.Touseit,storetranslationslationstringsinlanguagefilesunderthelangderthelangdirectory(例如,ES,ES,FR),thenretreiveTreivEthemvialang :: thenretRievEtheMvialang :: get()
PHP評論團隊
Jul 18, 2025 am 04:54 AM
寫好註釋對團隊協作至關重要,尤其在PHP項目中,關鍵在於如何寫出有用的註釋。 1.使用DocBlock明確函數用途,包括參數和返回值類型,提升IDE識別與開發效率;2.在復雜邏輯處添加行內註釋,解釋關鍵判斷條件或特殊處理;3.統一註釋風格,規範格式與內容要求,並藉助工具檢查,確保一致性。


