针对map的lambda

2023-05-22 08:33:27 浏览数 (2)

例如原来的:

代码语言:javascript复制
Steam.of(Maps.of("foo", "bar"))
            .map(e -> e.getKey()   e.getValue())
            .findFirst();

现在

代码语言:javascript复制
Steam.of(Maps.of("foo", "bar"))
                    .map(SerFunc.entryFunc((key, value) -> key   value))
                    .findFirst();

可以给keyvalue取不同的变量名,源码是

代码语言:javascript复制
static <K, V, R> Function<Map.Entry<K, V>, R> entryFunc(BiFunction<K, V, R> biFunc) {
    return entry -> biFunc.apply(entry.getKey(), entry.getValue());
  }

还有其他的类型

代码语言:javascript复制
val list = Lists.of();
Steam.of(Maps.of("foo", "bar"))
    .forEach(SerCons.entryCons((key, value) -> list.add(key   value)));
Assertions.assertEquals("foobar", list.get(0));

源码

代码语言:javascript复制
static <K, V> Consumer<Map.Entry<K, V>> entryCons(BiConsumer<K, V> biCons) {
  return entry -> biCons.accept(entry.getKey(), entry.getValue());
}

以及

代码语言:javascript复制
val first =
    Steam.of(Maps.of("foo", "bar"))
        .findFirst(SerPred.entryPred((key, value) -> key.equals("foo") && value.equals("bar")));
Assertions.assertTrue(first.isPresent());

源码

代码语言:javascript复制
static <K, V> Predicate<Map.Entry<K, V>> entryPred(BiPredicate<K, V> biPred) {
  return entry -> biPred.test(entry.getKey(), entry.getValue());
}

0 人点赞