在Java 11中以任何方式声明不可变的linkedhashmap

Fabrizio Stellato:

如果要声明常量映射,则可以使用java 11进行以下操作:

 Map<String, String> map = Map.of(
      key, value,
      key, value,
      etc. etc
 )

出于我的目的,我需要一个LinkedHashMap,因为我需要确保定义键值对的顺序安全,主要是因为我需要流式传输并在映射中找到第一个元素。

就像是:

   return map.entrySet().stream()
            .filter(o -> o.getValue != null))
            .findFirst()
            .map(Map.Entry::getKey)

有什么提示吗?

tquadrat

那这个呢?

Map<String, String> map = new LinkedHashMap<>();
map.put( "key1", "value1" );
map.put( "key2", "value2" );
…
map = Collections.unmodifiableMap( map );

您不能使用,Map.of()因为这不会保留输入顺序。另外,既不Map.of()接受null键值也不接受值。根据第二个代码片段,您将期望链接到的一些键null

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章