[問題] 有關map 一個key對應多個value問題

看板java作者 (單調的生活)時間10年前 (2015/05/28 18:58), 編輯推噓0(005)
留言5則, 4人參與, 最新討論串1/1
各位大大好, 最近在看別人寫map對應多個value的code,有一點一直想不清楚,所以想要請問各位大大 下列是code sample HashMap<String, HashSet<String>> map = new HashMap<String, HashSet<String>>(); ... while ( (line = br.readLine()) != null ) { String[] lineComponents = line.split(" "); String aa = lineComponents[0].toLowerCase(); String bb = lineComponents[1].toLowerCase(); HashSet<String> set = map.get(aa); if (set == null) { set = new HashSet<String>(); map.put(aa, set); } set.add(bb); } 不太理解的地方在於,當我讀到一筆map中沒有的值時,假設key是"company",value是"apple" 會執行map.put(aa,set),這時map會是 company :[],到這邊我都可以理解, 但不懂的地方在於,為什麼跳出 IF判斷後,執行 set.add(bb) , map會變成 company:[apple] ,map加入值,不是只能用put嗎?set.add 能加入值是因為什麼呢?? 感謝大大們看完我的問題,這code看了一天,實在是不想一知半解,放過他 希望有大大能幫忙解惑 謝謝 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.87.142.18 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1432810705.A.F81.html

05/28 19:36, , 1F
指標. map存set的起始位址; set存String的起始位址
05/28 19:36, 1F

05/28 20:31, , 2F
HashMap<String, HashSet<String>>
05/28 20:31, 2F

05/28 20:31, , 3F
map的key對應到一個set,一個set裡可以放多個value,就這樣
05/28 20:31, 3F

05/28 21:24, , 4F
你的例子有一個map 跟多個set, set 是放在map裡的,你搞混了
05/28 21:24, 4F

05/28 22:13, , 5F
感謝各位大大的分享,我知道我哪裡搞混了,謝謝
05/28 22:13, 5F
文章代碼(AID): #1LPlJH-1 (java)
文章代碼(AID): #1LPlJH-1 (java)