Java 创建新地图。入门-似乎比需要的更难
我有两种方法:Java 创建新地图。入门-似乎比需要的更难,java,hashmap,java-11,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); } 但这会创建一个映射而不是Map.Entry。对于Java 9+,您可以使用: static void done(E,Map.Entry m){ //做点什么 } //使用不
@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。对于Java 9+,您可以使用:
static void done(E,Map.Entry m){
//做点什么
}
//使用不可变项
静态无效完成(E E、字符串k、T v){
完成(e,映射条目(k,v));
}
//使用可变条目
静态无效完成(E E、字符串k、T v){
完成(e,新的抽象映射。SimpleEntry(k,v));
}
请参见此处:newabstractmap.SimpleEntry(“myKey”,value)
Nice(+1)。但是应该注意,Map.entry(k,v)
将返回一个不可变的条目。如果需要更改,我想我们仍然需要使用好的旧的抽象映射。SimpleEntry
@Kartik当然,谢谢更新。@Kartik映射上的限制项与映射的相同(例如,不仅不可变,而且不允许空的),OP似乎已经知道了。
this.done(e, Map.of(k,v));
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));
}