簡體   English   中英

Java8中的哈希映射條目對流?

[英]Stream of hashmap entry pairs in Java8?

Java8 ,我有一個HashMap<Integer, City> capitals我想獲取由Integer過濾的資本對流Stream<Map.Entry<Integer, City>, Map.Entry<Integer, City>> capitalPairs 我怎樣才能做到這一點?

示例: capitals = { (1, Amsterdam), (2, Barcelona), (3, Dortmund) }然后(過濾定義為first integer < second integer ):

capitalPairs = [
( (1, Amsterdam), (2, Barcelona) ),
( (1, Amsterdam), (3, Dortmund) ),
( (2, Barcelona), (3, Dortmund) ) ]

假設您希望所有關鍵api的first < second以避免重復的組合。

capitals.keySet().stream().flatMap(k1 ->
    capitals.keySet().stream().filter(k2 -> k1 < k2).map(k2 -> Pair.of(k1, k2)))
    // do something with the pair of keys, lookup the city as required.

您可以使用entrySet()而不是keySet()來執行此操作,但這比較麻煩。

capitals.entrySet().stream().flatMap(e1 ->
    capitals.entrySet().stream().filter(e2 -> e1.getValue() < e2.getValue()).map(e2 -> Pair.of(e1, e2)))
    // do something with the Pair of entry(s)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM