Map<> 有一个Set<Map.Entry<K, V>> entrySet() 方法。这为您提供了一个 Set 可以迭代的条目。
如果你想遍历Tuple2<Integer, Double> 对象,你必须转换Entry 对象。为此,您可以 e. G。将您的 Set 转换为 Stream:
一步一步:
Stream<Entry<Integer, Double>> myEntryStream = myMap.entrySet().stream();
Stream<Tuple2<Integer, Double>> myTuple2Stream = myEntryStream.map(entry -> new Tuple2(entry.getKey(), entry.getValue()));
或者干脆
Stream<Tuple2<Integer, Double>> myStream = myMap.entrySet().stream().map(entry -> new Tuple2(entry.getKey(), entry.getValue()));
要对此进行迭代,您可以这样做
Iterable<Tuple2<Integer, Double>> it = myStream::iterator;
或者只是
for (Tuple2<Integer, Double> item: (Iterable<Tuple2<Integer, Double>>) myStream::iterator) {
// do sth with item
}
如果你的Tuple2,不管它是什么,有一个构造函数接受Map.Entry,你甚至可以这样做
.map(Tuple2::new)
为了实现你的目标。