假设我有一个TreeMap<Long,Long> map
。我需要从getter中查看不可修改的版本,所以我返回return Collections.unmodifiableMap(map);
的Map<Long,Long>
。
然而,我需要它以与TreeMap<Long,Long>
时相同的密钥顺序返回。我能保证在所有情况下,当从TreeMap
创建时,在这个不可修改的Map
中密钥的顺序都是相同的吗?
是
这是一种观点。底层数据结构与相同。
不可修改的映射只是原始映射的包装器,当调用赋值函数时抛出异常,所有其他方法都是源映射的有效代理。
值得注意的是,尽管视图是不可修改的,但子图仍然可以发生突变,这些突变将反映在视图中。如果开发人员认为不可修改的映射是原始映射的不可变副本,而不是简单的不可修改视图,则可能会引入Bug