我坚持使用Java-8中的数据转换......
有人知道如何将Map<Integer, Double>
转换为Iterable<Tuple2<Integer, Double>>
甚至是Map.Entry<Integer, Double>
Tuple2<Integer, Double>
到{{1}}?
谢谢!
答案 0 :(得分:1)
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)
为了实现你的目标。