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;