我得到了HashMap<K, V>
。
如何从中获取所有键的列表,其中相应的值可从I类分配?
答案 0 :(得分:2)
使用Java 8可以做到
Map<K, V> map = new HashMap<>();
List<K> list = map.entrySet().stream()
.filter(e -> e.getValue() instanceof I)
.map(e -> e.getKey())
.collect(Collectors.toList());
答案 1 :(得分:0)
其中相应的值可从第I类分配
你的意思是value.getClass().isAssignableFrom(I.class)
?如果是这样的话:
Map<K, V> map = ...
List<K> keys = new ArrayList<K>();
for(K key : map.keySet()) {
V value = map.get(key);
if(value.getClass().isAssignableFrom(I.class)) {
keys.add(key);
}
}
//Now you have a list of keys associated to values that are assignable from I.class
答案 2 :(得分:0)
您可以使用Map
过滤Streams
的值。
Map<K, V> map = new HashMap<>();
List<K> collect = map.entrySet()
.stream()
.filter(entry -> I.class.isInstance(entry.getValue()))
.map(Map.Entry::getKey)
.collect(toList());