jvtool筆記

1、----高度注意各種Map類集合Key/Value能不能存儲null值的情況
Map Key Value
HashMap Nullable Nullable
ConcurrentHashMap NotNull NotNull
TreeMap NotNull Nullable
  • 由于HashMap的干擾莹规,很多人認為ConcurrentHashMap是可以置入null值。同理,Set中的value實際是Map中的key窑滞。
2、----ConcurrentHashMap 使用
//RIGHT 
E e = map.get(key);
if (e == null) {
   e = new E();
   E previous = map.putIfAbsent(key, e);
   if ( previous != null) {
     return previous;
   }
}
return e;
  • putIfAbsent 如果傳入key對應的value已經(jīng)存在,就返回存在的value哀卫,不進行替換巨坊。如果不存在,就添加key和value此改,返回null
3趾撵、----【推薦】Array 與 List互轉的正確寫法
// list -> array,構造數(shù)組時不需要設定大小
String[] array = (String[])list.toArray(); //WRONG;
String[] array = list.toArray(new String[0]); //RIGHT
String[] array = list.toArray(new String[list.size()]); //RIGHT共啃,但list.size()可用0代替占调。

// array -> list
//非原始類型數(shù)組,且List不能再擴展
List list = Arrays.asList(array); 

//非原始類型數(shù)組勋磕, 但希望List能再擴展
List list = new ArrayList(array.length);
Collections.addAll(list, array);

//原始類型數(shù)組妈候,JDK8
List myList = Arrays.stream(intArray).boxed().collect(Collectors.toList());

//原始類型數(shù)組,JDK7則要自己寫個循環(huán)來加入了
4挂滓、----【強制】靜態(tài)方法不能被子類覆寫苦银。

因為它只會根據(jù)表面類型來決定調(diào)用的方法。

Base base = new Children();

// 下句實際調(diào)用的是父類的靜態(tài)方法赶站,雖然對象實例是子類的幔虏。
base.staticMethod();

5、---- BlockQueue 相關
  • 從隊列添加元素的方法有:put贝椿,add想括,offer

add:若超出了度列的長度會直接<u>拋出異常</u>。
put: 若向隊尾添加元素的時候發(fā)現(xiàn)隊列已經(jīng)滿了會發(fā)生<u>阻塞</u>一直等待空間烙博,以加入元素瑟蜈。
offer:將指定元素插入此隊列中,成功時返回 true渣窜,如果當前沒有可用的空間铺根,則<u>返回 false</u>,不會拋異常

  • 從隊列中取出并移除元素的方法有:poll乔宿,remove位迂,take

remove:若隊列為空,拋出NoSuchElementException<u>異常</u>详瑞。
take:若隊列為空掂林,發(fā)生<u>阻塞</u>,等待有元素坝橡。
poll: 若隊列為空泻帮,<u>返回null</u>。 poll(long timeout, TimeUnit unit) 設定等待的時間驳庭,如果在指定時間內(nèi)隊列還無值則返回null刑顺,不為空則返回隊首值

6氯窍、---- netty IntObjectHashMap

在插入時饲常,同樣把int先取模落桶蹲堂,如果遇到?jīng)_突,則不采樣HashMap的鏈地址法贝淤,而是用開放地址法(線性探測法)index+1找下一個空桶柒竞,
最后在keys[index],values[index]中分別記錄播聪。在查找時也是先落桶朽基,然后在key[index++]中逐個比較key。

所以离陶,對比整個數(shù)據(jù)結構稼虎,省的不止是int vs Integer,還有每個Node的內(nèi)容招刨。
而性能嘛霎俩,IntObjectHashMap還是穩(wěn)贏一點的,隨便測了幾種場景沉眶,耗時至少都有24ms vs 28ms的樣子打却,好的時候甚至快1/3。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谎倔,一起剝皮案震驚了整個濱河市柳击,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌片习,老刑警劉巖捌肴,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異藕咏,居然都是意外死亡状知,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門侈离,熙熙樓的掌柜王于貴愁眉苦臉地迎上來试幽,“玉大人,你說我怎么就攤上這事卦碾∑涛耄” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵洲胖,是天一觀的道長济榨。 經(jīng)常有香客問我,道長绿映,這世上最難降的妖魔是什么擒滑? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任腐晾,我火速辦了婚禮,結果婚禮上丐一,老公的妹妹穿的比我還像新娘藻糖。我一直安慰自己,他們只是感情好库车,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布巨柒。 她就那樣靜靜地躺著,像睡著了一般柠衍。 火紅的嫁衣襯著肌膚如雪洋满。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天珍坊,我揣著相機與錄音牺勾,去河邊找鬼。 笑死阵漏,一個胖子當著我的面吹牛驻民,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播袱饭,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼川无,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了虑乖?” 一聲冷哼從身側響起懦趋,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疹味,沒想到半個月后仅叫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡糙捺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年诫咱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洪灯。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡坎缭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出签钩,到底是詐尸還是另有隱情掏呼,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布铅檩,位于F島的核電站憎夷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏昧旨。R本人自食惡果不足惜拾给,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一祥得、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蒋得,春花似錦级及、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缰雇。三九已至入偷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間械哟,已是汗流浹背疏之。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留暇咆,地道東北人锋爪。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像爸业,于是被迫代替她去往敵國和親其骄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355