gdi*_*azc 5 java data-structures
这个问题几乎是不言自明的.我有一个数据结构(我提到了一个HashMap但也可能是一个Set或一个List),我最初填充:
Map<String, String> map = new HashMap<String, String>();
for( something ) {
map.put( something );
}
Run Code Online (Sandbox Code Playgroud)
填充结构后,我永远不想添加或删除任何项目:
map.freeze();
Run Code Online (Sandbox Code Playgroud)
如何使用标准Java库实现这一目标?
Pet*_*ček 18
您可以使用标准JDK库做到最好Collections.unmodifiableMap().
请注意,您必须删除原始地图引用,因为仍可以正常访问和更改该引用.如果您将旧引用传递给任何其他对象,它们仍然可以更改您的地图.
最佳实践:
map = Collections.unmodifiableMap(map);
Run Code Online (Sandbox Code Playgroud)
并确保您没有分享原始map参考.
听起来你会对番石榴做得很好ImmutableMap.这允许使用Builder模式来组装和"冻结".