Java 使用迭代器从HashMap获取(键、值)对
我有Java 使用迭代器从HashMap获取(键、值)对,java,android,Java,Android,我有 private Map=new HashMap(); 我要返回值 private Map<K,Collection<V>> map = new HashMap<>(); public Iterable allValues(){ } 如何将值返回为Iterable 您可以按如下方式使用流: public Iterable<Map.Entry<K, V>> allValues() { } 选择一种语言映射保存类型为Collec
private Map=new HashMap();
我要返回值
private Map<K,Collection<V>> map = new HashMap<>();
public Iterable allValues(){
}
如何将值返回为Iterable 您可以按如下方式使用流:
public Iterable<Map.Entry<K, V>> allValues() {
}
选择一种语言映射保存类型为
Collection
的值,allValues()
应返回一个Iterable
,其中映射实体的值类型为V
。如何将集合
转换为V
?假设您有一个映射{x:[y,z],a:[b,c]},那么是否要返回一个iterable,该iterable给出这些对(x,y),(x,z),(a,b),(a,c)
?如果是这样的话,你应该用这种例子来编辑你的问题。你必须自己实现Iterable
接口。(您也可以选择使用这样的库,比如Guava的Multimap
)您可以只使用Map.entry
,而不去AbstractMap
。
Iterable<Map.Entry<K, V>> iterable = map.entrySet().stream()
.flatMap(e -> e.getValue().stream().map(v-> entry(e.getKey(), v)))
.collect(toList());
import static java.util.Map.entry;
import static java.util.stream.Collectors.toList;