하나의 key에 여러개의 value를 put 할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@Test
public void multimapTest() throws Exception {
// 하나의 key에 여러 value 셋팅 가능
Multimap<String, String> mpsTeam = ArrayListMultimap.create();
mpsTeam.put("dev", "jooyong");
mpsTeam.put("dev", "cjr");
mpsTeam.put("dev", "devhak");
mpsTeam.put("dev", "not yet");
mpsTeam.put("live", "jn");
mpsTeam.put("live", "hs");
mpsTeam.put("live", "hb");
mpsTeam.put("live", "yi");
mpsTeam.put("live", "mn");
System.out.println(mpsTeam); // {dev=[jooyong, cjr, devhak, not yet], live=[jn, hs, hb, yi, mn]}
Collection<String> dev = mpsTeam.get("dev");
System.out.println(dev); // [jooyong, cjr, devhak, not yet]
// 특정 value 제거
mpsTeam.remove("dev", "not yet");
System.out.println(mpsTeam); // {dev=[jooyong, cjr, devhak], live=[jn, hs, hb, yi, mn]}
// always returns a non-null, possibly empty collection
Collection<String> unknown = mpsTeam.get("unkownKey");
System.out.println(unknown); // []
assertNotNull(unknown);
}
Multimap은 Map이 아니다.
Multimap 구현체
ArrayListMultimap
HashMultimap
LinkedListMultimap
LinkedHashMultimap
TreeMultimap
ImmutableListMultimap
ImmutableSetMultimap
Multimap을 Map으로 변환하는 방법
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Test
public void asMapTest() throws Exception {
// 하나의 key에 여러 value 셋팅 가능
Multimap<String, String> mpsTeam = ArrayListMultimap.create();
mpsTeam.put("dev", "jooyong");
mpsTeam.put("dev", "cjr");
mpsTeam.put("dev", "devhak");
mpsTeam.put("dev", "not yet");
mpsTeam.put("live", "jn");
mpsTeam.put("live", "hs");
mpsTeam.put("live", "hb");
mpsTeam.put("live", "yi");
mpsTeam.put("live", "mn");
System.out.println(mpsTeam); // {dev=[jooyong, cjr, devhak, not yet], live=[jn, hs, hb, yi, mn]}
Map<String, Collection<String>> stringCollectionMap = mpsTeam.asMap();
System.out.println(stringCollectionMap); // {dev=[jooyong, cjr, devhak, not yet], live=[jn, hs, hb, yi, mn]}
}