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

标签 java java-11

如果我想用 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)

有什么提示吗?

最佳答案

这个呢?

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

您不能使用 Map.of(),因为这不会保留条目的顺序。此外,Map.of() 将不接受 null 值,无论是键还是值。根据第二个代码片段,您会期望一些链接到 null 的键。

关于java - 在 Java 11 中声明不可变 linkedhashmap 的任何方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61870864/

相关文章:

java - OpenJDK 标准库类源

java - 如何在 Java 11 中使用 BouncyCaSTLeProvider

java - 如何检查整个组件是否在屏幕上?

java - 包含 Java 项目作为库

java - 将 POI 中的 Excel 单元格分组,并将第一行设置为 "main"

java - 为什么 Java 11 基础 Docker 镜像如此之大? (openjdk :11-jre-slim)

java - 使用 JMagick 调整图像大小

Java注解强制写javadoc

java - Apache NetBeans 9.0 是否支持 java 11?