Java8中hashmap条目对的流?

Java8中hashmap条目对的流?,java,hashmap,java-8,java-stream,Java,Hashmap,Java 8,Java Stream,在Java8中,有一个HashMap capitals我想得到一个由整数过滤的流capitalPairs。我该怎么做 示例:capitals={(1,阿姆斯特丹),(2,巴塞罗那),(3,多特蒙德)}然后(过滤定义为first integerk1Pair.of(k1,k2))) //用这对钥匙做些什么,根据需要查找城市。 您可以使用entrySet()而不是keySet()来实现这一点,但这更麻烦 capitals.entrySet().stream().flatMap(e1 ->

Java8
中,有一个
HashMap capitals
我想得到一个由
整数过滤的
流capitalPairs
。我该怎么做

示例:
capitals={(1,阿姆斯特丹),(2,巴塞罗那),(3,多特蒙德)}
然后(过滤定义为
first integer
):


假设您希望所有键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.
capitals.keySet().stream().flatMap(k1->
capitals.keySet().stream().filter(k2->k1Pair.of(k1,k2)))
//用这对钥匙做些什么,根据需要查找城市。
您可以使用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)
capitals.entrySet().stream().flatMap(e1->
capitals.entrySet().stream().filter(e2->e1.getValue()Pair.of(e1,e2)))
//对这对条目执行某些操作

你说成对是什么意思?你是指所有的组合,还是所有的排列?你确定你需要如此复杂的构造吗?我怀疑你只需要所有的密钥对。如果你有一个
TreeMap
而不是
HashMap
,@PeterLawrey的解决方案可以通过对内部流使用
tailMap(k1)
来改进。@brandonchomery你需要有一个
Pair.of(a,b)的实现
我只想按原样使用流,而不是将其分配给变量。
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)