My-*_*-Is 5 java collections unmodifiable map
本java.util.Collections
类允许我做集合实例不可修改.以下方法
protected Map<String, List<String>> getCacheData() {
return Collections.unmodifiableMap(tableColumnCache);
}
Run Code Online (Sandbox Code Playgroud)
返回一个umodifiable Map
,因此UnsupportedOperationException
尝试更改map实例会导致a.
@Test(expected = UnsupportedOperationException.class)
public void checkGetCacheData_Unmodifiable() {
Map<String, List<String>> cacheData = cache.getCacheData();
cacheData.remove("SomeItem");
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,所有List<String>
孩子都不可修改.所以我想知道是否有办法强制实施儿童价值观的List<String>
无法改变的行为?
当然,或者我可以迭代映射键值对,使列表不可修改并重新组合映射.
您需要一个充满ImmutableList实例的ImmutableMap.使用番石榴来保持你的理智.
首先,创建您需要的ImmutableList实例:
ImmutableList<String> list1 = ImmutableList.of(string1, string2, etc);
ImmutableList<String> list2 = ImmutableList.of(string1, string2, etc);
Run Code Online (Sandbox Code Playgroud)
然后创建你的ImmutableMap:
ImmutableMap<String,List<String>> map = ImmutableMap.of("list1", list1, "list2", list2);
Run Code Online (Sandbox Code Playgroud)
有许多方法可以实例化不可变列表和映射,包括构建器模式.查看有关ImmutableList和ImmutableMap的JavaDocs以获取更多详细信息.
归档时间: |
|
查看次数: |
2149 次 |
最近记录: |