创建新的Map.Entry - 似乎比它需要的更难

2 java hashmap java-11

我有这两种方法:

 @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);
  }
Run Code Online (Sandbox Code Playgroud)

而不是传递null,我如何创建一个新的Map.Entry?我试过了:

this.done(e, Map.of(k,v));
Run Code Online (Sandbox Code Playgroud)

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

Nam*_*man 6

使用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));
}
Run Code Online (Sandbox Code Playgroud)

  • 不错(+1).应该注意的是,`Map.entry(k,v)`将返回一个不可变的条目.如果需要更改,我想我们仍然需要使用旧的`AbstractMap.SimpleEntry`. (3认同)