Skip to content

Commit fe96e11

Browse files
swapanpramanick2004pivovarit
authored andcommitted
BAEL-2178 (eugenp#5194)
* BAEL-2178 * revert previous commit, adding classes to collections project
1 parent 57b6480 commit fe96e11

2 files changed

Lines changed: 148 additions & 0 deletions

File tree

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/**
2+
*
3+
*/
4+
package com.baeldung.java.map;
5+
6+
import java.util.HashSet;
7+
import java.util.Map;
8+
import java.util.Set;
9+
import java.util.Map.Entry;
10+
import java.util.stream.Stream;
11+
12+
/**
13+
* @author swpraman
14+
*
15+
*/
16+
public class MapUtil {
17+
18+
public static <K, V> Stream<K> keys(Map<K, V> map, V value) {
19+
return map.entrySet()
20+
.stream()
21+
.filter(entry -> value.equals(entry.getValue()))
22+
.map(Map.Entry::getKey);
23+
}
24+
25+
public static <K, V> Set<K> getKeys(Map<K, V> map, V value) {
26+
Set<K> keys = new HashSet<>();
27+
for (Entry<K, V> entry : map.entrySet()) {
28+
if (entry.getValue().equals(value)) {
29+
keys.add(entry.getKey());
30+
}
31+
}
32+
return keys;
33+
}
34+
35+
public static <K, V> K getKey(Map<K, V> map, V value) {
36+
for (Entry<K, V> entry : map.entrySet()) {
37+
if (entry.getValue().equals(value)) {
38+
return entry.getKey();
39+
}
40+
}
41+
return null;
42+
}
43+
44+
}
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
/**
2+
*
3+
*/
4+
package com.baeldung.java.map;
5+
6+
import static org.junit.Assert.assertEquals;
7+
8+
import java.util.Arrays;
9+
import java.util.HashMap;
10+
import java.util.HashSet;
11+
import java.util.Map;
12+
import java.util.stream.Collectors;
13+
14+
import org.apache.commons.collections4.BidiMap;
15+
import org.apache.commons.collections4.bidimap.DualHashBidiMap;
16+
import org.junit.Test;
17+
18+
import com.google.common.collect.HashBiMap;
19+
20+
/**
21+
* @author swpraman
22+
*
23+
*/
24+
public class MapUtilUnitTest {
25+
26+
27+
@Test
28+
public void whenUsingImperativeWayForSingleKey_shouldReturnSingleKey() {
29+
Map<String, String> capitalCountryMap = new HashMap<>();
30+
capitalCountryMap.put("Tokyo", "Japan");
31+
capitalCountryMap.put("New Delhi", "India");
32+
assertEquals("New Delhi", MapUtil.getKey(capitalCountryMap, "India"));
33+
}
34+
35+
@Test
36+
public void whenUsingImperativeWayForAllKeys_shouldReturnAllKeys() {
37+
Map<String, String> capitalCountryMap = new HashMap<>();
38+
capitalCountryMap.put("Tokyo", "Japan");
39+
capitalCountryMap.put("Berlin", "Germany");
40+
capitalCountryMap.put("Cape Town", "South Africa");
41+
capitalCountryMap.put("Pretoria", "South Africa");
42+
capitalCountryMap.put("Bloemfontein", "South Africa");
43+
44+
assertEquals(new HashSet<String>(Arrays.asList(
45+
new String[] {"Cape Town", "Pretoria", "Bloemfontein"})),
46+
MapUtil.getKeys(capitalCountryMap, "South Africa"));
47+
}
48+
49+
@Test
50+
public void whenUsingFunctionalWayForSingleKey_shouldReturnSingleKey() {
51+
Map<String, String> capitalCountryMap = new HashMap<>();
52+
capitalCountryMap.put("Tokyo", "Japan");
53+
capitalCountryMap.put("Berlin", "Germany");
54+
assertEquals("Berlin", MapUtil.keys(capitalCountryMap, "Germany").findFirst().get());
55+
}
56+
57+
@Test
58+
public void whenUsingFunctionalWayForAllKeys_shouldReturnAllKeys() {
59+
Map<String, String> capitalCountryMap = new HashMap<>();
60+
capitalCountryMap.put("Tokyo", "Japan");
61+
capitalCountryMap.put("Berlin", "Germany");
62+
capitalCountryMap.put("Cape Town", "South Africa");
63+
capitalCountryMap.put("Pretoria", "South Africa");
64+
capitalCountryMap.put("Bloemfontein", "South Africa");
65+
assertEquals(new HashSet<String>(Arrays.asList(
66+
new String[] {"Cape Town", "Pretoria", "Bloemfontein"})),
67+
MapUtil.keys(capitalCountryMap, "South Africa").collect(Collectors.toSet()));
68+
}
69+
70+
@Test
71+
public void whenUsingBidiMap_shouldReturnKey() {
72+
BidiMap<String, String> capitalCountryMap = new DualHashBidiMap<String, String>();
73+
capitalCountryMap.put("Berlin", "Germany");
74+
capitalCountryMap.put("Cape Town", "South Africa");
75+
assertEquals("Berlin", capitalCountryMap.getKey("Germany"));
76+
}
77+
78+
@Test
79+
public void whenUsingBidiMapAddDuplicateValue_shouldRemoveOldEntry() {
80+
BidiMap<String, String> capitalCountryMap = new DualHashBidiMap<String, String>();
81+
capitalCountryMap.put("Berlin", "Germany");
82+
capitalCountryMap.put("Cape Town", "South Africa");
83+
capitalCountryMap.put("Pretoria", "South Africa");
84+
assertEquals("Pretoria", capitalCountryMap.getKey("South Africa"));
85+
}
86+
87+
@Test
88+
public void whenUsingBiMap_shouldReturnKey() {
89+
HashBiMap<String, String> capitalCountryMap = HashBiMap.create();
90+
capitalCountryMap.put("Berlin", "Germany");
91+
capitalCountryMap.put("Cape Town", "South Africa");
92+
assertEquals("Berlin", capitalCountryMap.inverse().get("Germany"));
93+
}
94+
95+
@Test(expected=IllegalArgumentException.class)
96+
public void whenUsingBiMapAddDuplicateValue_shouldThrowException() {
97+
HashBiMap<String, String> capitalCountryMap = HashBiMap.create();
98+
capitalCountryMap.put("Berlin", "Germany");
99+
capitalCountryMap.put("Cape Town", "South Africa");
100+
capitalCountryMap.put("Pretoria", "South Africa");
101+
assertEquals("Berlin", capitalCountryMap.inverse().get("Germany"));
102+
}
103+
104+
}

0 commit comments

Comments
 (0)