如何创建新的Map.Entry?重载方法传参替代null的实现方案
解决Map.Entry创建问题的几种实用方案
嘿,我完全懂你现在的困扰——你想把k和v包装成Map.Entry对象传给第一个done方法,但Map.of(k, v)返回的是整个Map而非单个Entry对吧?这里有几个直接好用的办法:
使用
AbstractMap.SimpleEntry(全Java版本兼容)
这是Java标准库自带的最常用Map.Entry实现类,支持泛型,直接实例化就能用:@Override public void done(E e, String k, T v) { this.done(e, new AbstractMap.SimpleEntry<>(k, v)); }如果你的业务场景需要修改Entry的键或值,这个类还支持
setValue()方法,灵活性拉满。使用
Map.entry()(Java 9+推荐)
Java 9及以后新增了这个静态方法,能直接返回一个不可变的Map.Entry实例,代码更简洁优雅:@Override public void done(E e, String k, T v) { this.done(e, Map.entry(k, v)); }注意这个Entry是不可变的,调用
setValue()会抛出UnsupportedOperationException,如果你的done方法不需要修改Entry,这绝对是最优选择。不推荐的绕路方式(仅作了解)
你之前用Map.of(k, v)的思路其实也能拿到Entry,但太繁琐了,完全没必要这么写:// 仅作示例,不推荐使用 this.done(e, Map.of(k, v).entrySet().iterator().next());
总结一下:根据你是否需要可变Entry来选择上面两种方案就好,比绕路从Map里取Entry高效得多。
内容的提问来源于stack exchange,提问作者user5047085
相关产品推荐
相关产品推荐

