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