Python中文网

一个关于 编程问题的解答网站.

有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java8中hashmap条目对的java流?

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) ) ]

共 (1) 个答案

  1. # 1 楼答案

    假设您希望所有first < second的键apir避免重复组合

    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)