1. 程式人生 > >Java程式碼優化-在某種情況下避免Map的containsKey方法的使用

Java程式碼優化-在某種情況下避免Map的containsKey方法的使用

當要在HashSet或者HashMap中add/put之前判斷是否存在key時,可以直接使用add/put方法然後根據返回值來判斷,因為put/add方法會將以前節點的value返回(對於Set來說會將Object物件返回,涉及到HashSet的實現方式:用HashMap實現,然後每一個節點的value放的都是同一個Object物件) 如果不存在則返回null說明不包含這個key,否則返回非空說明包含這個key。這樣可以避免contain的多餘使用,當這樣的操作(開頭所說的操作)較多時會提高時間效率~~~
這個是leetcode上的一道題 https://leetcode.com/problems/contains-duplicate-ii/

,可以看到效果:

[直接使用add方法
程式碼

使用contains方法
程式碼

從圖中可以看出,前者(11ms)比後者(15ms)效率提升了不少(這個還是在測試情況不多的情況下-20個測試用例),同理,使用Map的時候也是一樣~~~
這個只是在做題和研究原始碼過程中一個小小的優化技巧(雖然微不足道吧,但是個人覺得細節還是挺重要的),大家有什麼意見可以多多交流~歡迎~