首页 > 解决方案 > 创建新的 Map.Entry - 似乎比它需要的更难

问题描述

我有这两种方法:

 @Override
  public void done(E e, Map.Entry<String, T> m) {

  }

  @Override
  public void done(E e, String k, T v) {
     this.done(e, null);
  }

我怎样才能创建一个新的 Map.Entry,而不是传递 null?我试过:

this.done(e, Map.of(k,v));

但这会创建一个 Map 而不是 Map.Entry。

标签: javahashmapjava-11

解决方案


使用 Java 9+,您可以Map.entry用作:

static <E, T> void done(E e, Map.Entry<String, T> m) {
     // do something
}

// using immutable entry
static <E, T> void done(E e, String k, T v) {
    done(e, Map.entry(k, v));
}

// using mutable entry 
static <E, T> void done(E e, String k, T v) {
    done(e, new AbstractMap.SimpleEntry<>(k, v));
}

推荐阅读