问题标签 [unmodifiable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2728 浏览

java - 并发访问 unmodifiableMap

单例用于存储数据。数据每分钟更新一次。是否有可能,从 unmodifiableMap 读取将成为同步问题?是否有可能在 init 方法中发生重新排序并发布到集合的链接,但集合没有完全填充?

0 投票
6 回答
1487 浏览

java - 如何声明该方法返回 Collections.unmodifiableMap

我正在从一个方法返回一个不可修改的地图。如何确保任何试图修改返回映射的代码都会出现编译时错误,而不是运行时错误?

我的课:

我希望这会产生编译时错误:

我可以更改退货类型吗?我可以添加适当的注释吗?

0 投票
1 回答
1888 浏览

javascript - JavaScript,定义不可修改的枚举

因此,我受到这个问题(JavaScript 中的枚举?)的启发,开始着手为 JavaScript 插入库以启用不可修改的枚举。我已经定义了一个体面的工作方法,但我想进一步充实它。

这个概念利用Object.defineProperty(文档:Here

我目前的定义允许:

到目前为止我所拥有的:

我想补充的两件事是:

  1. 较旧的浏览器支持:因此,重新Object.defineProperty定义未定义的位置。(我目前无法访问旧版浏览器来测试可能的重新定义)
  2. 我可能错过了枚举定义的任何考虑。

jsFiddle:

注意:我拥有odp=Object.defineProperty并且args=arguments是我在将 JavaScript 插入我的页面之前通过闭包编译器运行它的原因,这样做有助于压缩。(对于那些可能想知道的人)

0 投票
4 回答
3069 浏览

java - 如何制作地图不可修改?

该类java.util.Collections允许我使集合实例不可修改。下面的方法

返回一个 umodifiable Map,因此 anUnsupportedOperationException是由尝试更改地图实例引起的。

不幸的是,所有List<String>孩子都不是不可修改的。所以我想知道是否有办法对子值强制执行不可移动的行为List<String>

当然,或者我可以遍历映射键值对,使列表不可修改并重新组合映射。

0 投票
3 回答
208 浏览

java - 在客户端迭代时服务器上的 unmodifiableCollection 更改

在服务器向客户端提供现有集合的不可修改集合的场景中,客户端开始对其进行迭代,同时如果在服务器级别一个线程更改列表,例如删除它的一个元素。这会导致客户异常吗?如果是,那会是什么?当客户端在迭代列表时突然出现异常时,这不是很奇怪吗?

0 投票
2 回答
3363 浏览

java - 不可修改集合中的 ConcurrentModificationException

我在下面有这段代码,我通过执行以下行得到了 ConcurrentModificationException:

编码:

堆栈是:

正好在 foreach 行:

我不明白为什么会发生此错误,因为我没有修改列表。

0 投票
2 回答
196 浏览

java - 一个例子来说明 Java 中 unmodifiableCollection 的这一点?

我正在阅读Core Java Volume I - fundamentals (9th edition) by Cay S. Horstmann and Gary Cornell。这是书中的一段我不明白。如果你能用一个简单的例子来说明它的含义,那就太好了。谢谢

段落: undmodifiableCollection 方法返回一个集合,其 equal 方法不调用底层集合的 equals 方法。相反,它继承了 object 类的 equals 方法,该方法只是测试对象是否相同。如果你将一个集合或列表变成一个集合,你就不能再测试相同的内容了。视图以这种方式运行是因为相等性测试在此层次结构级别上没有明确定义。视图以相同的方式处理哈希码方法。但是,unmodifiableSet 和 unmodifiableList 方法使用底层集合的 equals 和 hashCode 方法。

0 投票
3 回答
148 浏览

java - Why don't the unmodifiable methods from Collections class, create collections with new elements?

Suppose there is this code:

it prints

If changing the second line to

it works as expected. The question is why doesn't the UnmodifiableList inner class from Collections (and all the other unmodifiable classes) from there create a fresh copy of the original list, as does the constructor of ArrayList for example in order to really make it unmodifiable?

Edit: I understand what the code does; my question is why was it implemented this way? Why does the constructor from the UnmodifiableList (inner class from Collections) behave like the constructor of ArrayList in creating a fresh copy of the underlying array? Why a modifiable collection (ArrayList) copies the whole content while an unmodifiable collection doesn't?

0 投票
2 回答
1338 浏览

java - TreeMap 的不可修改视图是否保留键顺序?

假设我有一个TreeMap<Long,Long> map. 我需要从 getter 查看不可修改的版本,所以我返回 a Map<Long,Long>of return Collections.unmodifiableMap(map);.

但是,我需要以与TreeMap<Long,Long>. 我可以保证在所有情况下,Map从 a 创建时,在这个不可修改的情况下,键的顺序都是相同的TreeMap吗?

0 投票
3 回答
3852 浏览

java - 如何在java中反转不可修改的列表

我正在尝试反转一个不可修改的列表。但是我已经尝试实现它但是是否可以更新或反转和不可修改的列表?我知道我们可以使用 Google 不可变列表来做到这一点

在上面的程序中,我只是从后面遍历不可修改的列表并将它们放入一个数组中,然后将该数组添加到新的不可修改列表中。我们可以在优化方面做得更好吗?