【发布时间】:2019-07-13 07:58:18
【问题描述】:
import java.util.*;
import static java.lang.String.format;
public class Dumpground {
private static final String[] fruits = new String[]{"apples", "bananas", "grapes", "oranges", "watermelons", "kiwis"};
static Map<String, Long> expirationMap;
public static void main(String[] args) {
long expiration = 1L;
expirationMap = new HashMap<>();
for (String fruit : values()){
expirationMap.put(fruit, expiration);
expiration++;
}
for (Map.Entry<String, Long> item : expirationMap.entrySet()) {
String key = item.getKey();
Long value = item.getValue();
System.out.println(format("key: %s, value: %s", key, value));
}
}
public static String[] values() {return fruits;}
}
输出
key: oranges, value: 4
key: watermelons, value: 5
key: kiwis, value: 6
key: bananas, value: 2
key: apples, value: 1
key: grapes, value: 3
我正在尝试找到一种巧妙的方法来 grep 其值大于 X 的所有键
例如,如果 X == 3,它应该返回橙子、西瓜和猕猴桃
显而易见的方法是遍历 map 并比较值,但是有没有简单、简洁的方法呢?
【问题讨论】:
-
“有没有简单、简洁的方法来做到这一点?” Streams 似乎正是您想要的。
-
看来你需要在地图上做一个过滤器。见mkyong.com/java8/java-8-filter-a-map-examples
标签: java java-8 hashmap java-stream