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

问题描述 投票:0回答:1

如果要声明常量映射,则可以使用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)

任何提示?

java java-11
1个回答
3
投票
Map<String, String> map = new LinkedHashMap<>(); map.put( "key1", "value1" ); map.put( "key2", "value2" ); … map = Collections.unmodifiableMap( map );

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

© www.soinside.com 2019 - 2024. All rights reserved.