根据value取得map中对应的key|JAVA
public void filterMapByValueGuava () {
Map<Integer, String> map = Maps.filterValues(WEEK, r -> r.startsWith("S"));
assertThat(map.values(), contains("Saturday","Sunday"));
}
public class FilterMapByValueTest {
private Map<Integer, String> WEEK = new HashMap<>();
@Before
public void setUp () {
WEEK.put(1, "Monday");
WEEK.put(2, "Tuesday");
WEEK.put(3, "Wednesday");
WEEK.put(4, "Thursday");
WEEK.put(5, "Friday");
WEEK.put(6, "Saturday");
WEEK.put(7, "Sunday");
}
/**
* Java 8之前的版本
*/
@Test
public void filterMapByValue () {
Map<Integer, String> map = new HashMap<>();
for (Map.Entry<Integer, String> entry : WEEK.entrySet()) {
if (entry.getValue().startsWith("S")) {
map.put(entry.getKey(), entry.getValue());
}
}
assertThat(map.values(), contains("Saturday","Sunday"));
}
/**
* Java 8 Lambda
*/
@Test
public void filterMapByValueJava8Lambda () {
Map<Integer, String> map = WEEK.entrySet().stream().filter(r -> r.getValue().startsWith("S"))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
assertThat(map.values(), contains("Saturday","Sunday"));
}
/**
* Google Guava
*/
@Test
public void filterMapByValueGuava () {
Map<Integer, String> map = Maps.filterValues(WEEK, r -> r.startsWith("S"));
assertThat(map.values(), contains("Saturday","Sunday"));
}
}