1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.codehaus.mojo.buildplan.util;
17
18 import static java.util.stream.Collectors.toList;
19
20 import java.util.ArrayList;
21 import java.util.Collection;
22 import java.util.LinkedHashMap;
23 import java.util.Map;
24 import java.util.Set;
25
26 public class LinkedMultimap<K, V> implements Multimap<K, V> {
27
28 private final Map<K, Collection<V>> map = new LinkedHashMap<>();
29
30 @Override
31 public Set<K> keySet() {
32 return map.keySet();
33 }
34
35 @Override
36 public Collection<V> get(K key) {
37 return map.get(key);
38 }
39
40 @Override
41 public boolean put(K key, V value) {
42 return map.computeIfAbsent(key, k -> new ArrayList<>()).add(value);
43 }
44
45 @Override
46 public Map<K, Collection<V>> asMap() {
47 return map;
48 }
49
50 @Override
51 public boolean isEmpty() {
52 return map.isEmpty();
53 }
54
55 @Override
56 public Collection<V> values() {
57 return map.values().stream().flatMap(Collection::stream).collect(toList());
58 }
59 }