在 Java 8 中,有没有一种单行方法可以编写相同的代码,但使用某种类型的可变映射?

Is there a one-line way to write this same code but using some type of mutable map in Java 8?

提问人:intA 提问时间:8/1/2020 更新时间:8/1/2020 访问量:302

问:

  private Map<String,Object> contactQuestion = ImmutableMap.of("pageForm","contactInfo", "questionList",Arrays.asList(ImmutableMap.of("active",false)));

我在 JUnit 测试中在类级别定义了这个变量,但我意识到我需要映射是可变的。我最初使用 ImmutableMap 类编写代码,因为它提供了这种方便的内联构建地图的方法。我发现在我的测试中,我实际上需要改变这些地图。我尝试使用 HashMap,但 HashMap 似乎没有任何类似于 ImmutableMap 的函数。这里有什么聪明的选择吗?of()

感谢您的任何建议

爪哇岛 哈希映射 地图 不变性 可变

评论

5赞 khelwood 8/1/2020
怎么样 ?new HashMap(ImmutableMap.of(...))
1赞 chrylis -cautiouslyoptimistic- 8/1/2020
为什么这不是一个?class Question
0赞 intA 8/1/2020
@khelwood奏效了,谢谢!

答:

2赞 WJS 8/1/2020 #1

不确定,但自 JDK 9 以来ImmutableMap.of

  private Map<String,Object> contactQuestion = new HashMap<> 
     (Map.of("pageForm","contactInfo", 
          "questionList",Arrays.asList(Map.of("active",false))));

对于每个实现,如果您希望它们都是可变的,则需要将其传递给实现。Map.ofMap

评论

0赞 intA 8/1/2020
谢谢,是的,将其包装在新的 HashMap<>() 中起作用了。有点乱,但它有效。