3

如果我想声明一个常量映射,使用 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)

有什么提示吗?

4

1 回答 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.

于 2020-05-18T13:49:31.980 回答