- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在考虑效率、代码可读性和其他标准时,公开集合的只读 View 的更好方法是什么?从效率的角度来看,使用 methodA
而不是 methodB
真的有什么区别吗?请考虑可能经常访问 list
的情况 - 就像在 gui 表的数据模型中一样。
我假设Collectionss.umodifiebleList()
总是创建一个新对象,这是正确的吗?
class A{
List<Object> list = new ArrayList<Object>();
List<Object> listReadOnly = Collections.unmodifiableList(list);
List<Object> methodA(){
return listReadOnly;
}
List<Object> methodB(){
return Collections.unmodifiableList(list);
}
}
最佳答案
是的,Collections.unmodifyingList
每次都会创建一个新对象 - 但这是一个非常便宜的操作。 (它没有太多工作要做。)
我不确定 GUI 的数据模型是否可能会一遍又一遍地获取集合 - 它显然会获取集合然后迭代它,但这是另一回事。
如果只是在每次提示 GUI 数据已更改时获取集合,那么我预计这种情况相对很少发生 - 而不是“数十万次”每秒”的范围,这确实是一个瓶颈。我希望无论调用什么代码,都可能比创建不可修改列表所做的工作多得多。
基本上,这感觉像是过度的微观优化,除非您有证据表明它导致了问题。一如既往,您应该:
关于java - 有效使用 Collections.unmodifying*(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23926872/
我有一些计件工作是由不同的自定义(源代码不可用)框架完成的,这些框架返回 Map 实例。不幸的是,这些框架在返回用 Collections.unmodifiableMap 包装的 Map 实例时并不一
假设我们有一个 List>并想让它完全不可修改。只需将其传递给 Collection.unmodifiableList这还不够,因为内部列表仍然可以修改。 我会采用以下方法: List> someLi
在考虑效率、代码可读性和其他标准时,公开集合的只读 View 的更好方法是什么?从效率的角度来看,使用 methodA 而不是 methodB 真的有什么区别吗?请考虑可能经常访问 list 的情况
我正在使用一个 IDE,它在一些已生成但强烈需要的库文件中生成一个版本。因此,如果我想将库与多个版本一起使用,或者我看到大量实际上毫无意义的更改,就会出现问题。 总结:我想忽略一个或多个文件的单行,我
我从https://git-scm.com/book/en/v2/Getting-Started-What-is-Git%3F读到有关gitt中的三种状态 它在这里说Git具有文件可以驻留在其中的三个
我在使用来自 json 的 Jackson 序列化时遇到问题,如何从 Collections.unmodifiableMap 序列化? 我得到的错误是: com.fasterxml.jackson.d
这是导致问题的Streambuilder的builder方法内的代码: List users = snapshot.data; users.sort((user1, user2) => (user1.
private final Map q; public Info() { this(Collections.EMPTY_MAP); } public Info(final Map q) {
我找不到关于 Readline 选项 show-all-if-ambiguous 和 show-all-if-unmodified 之间区别的明确解释,以及是否它们影响不同的事物或相互排斥。关于这个主
我有一个不可修改的 map ( Map )。这包含一个键值对,其中值应该是一个列表,但对于特定键,值是一个空列表。 如何从 map 中删除该空列表并返回? 我已经使用谓词完成了它,它检查值是否是集合的
HTTP Spec (RFC-2616)在第 14.28 节中指出,If-Unmodified-Since header 必须由 HTTP 服务器识别,并且它只有一秒的精度。 如果资源更改频率超过每秒
您知道 If-Unmodified-Since 在野外的任何实际用途吗?来自description , 看起来这个 header 是为了帮助避免脏写。即仅当自客户端可用的最后修改时间以来未修改此资源时
我正在尝试创建一个不可变项目的不可变列表。我已经看到并尝试了 built_collection 中的 BuiltList,现在我看到了 List.unmodifiable。 它们是否等同,即使用它们我
是否有可能以文本形式获取当前 HTML 文档的源代码,与加载时完全一样? (即不是解析和 DOM 操作后的“生成的源代码”。) 注意:发出额外的 AJAX 请求以再次检索 HTML 页面在这种情况下不
我在 StatelessWidget 中有一个 ListView。它有项目,每个项目都包含一个复选框。当有人检查一个项目时,我希望 ListView 将其作为参数发送到另一个页面。但是当我这样做时,它
在 TFS 中,我正在执行以下操作。 UnShelve Pending Changes-->右键单击ShelveSet中的文件-->选择Compare-->共有三种选择: 未修改版本 带工作区版本 最
我经常运行一种验证模式,在这种模式中,某些变量必须包含前缀数量的值之一才能有效。 PSEUDO CODE: IF x == CONSTANT_1 || X == CONSTANT_2 || .
我最近将我的 Android Studio 更新到 1.0.1 并且不喜欢它表示项目结构的新方式: 如何恢复到项目 View 中显示未修改的文件系统目录布局的前一种安排? 最佳答案 查看您的第一个屏幕
在 Dart 中,如果要创建不可修改的列表,可以使用 List.unmodifiable() 或 UnmodifiableListView List list = [1, 2, 3]; List un
在 Dart 中,执行 List.unmodifiable(someList)和 Map.unmodifiable(someMap)创建一个不可修改的 查看 ,还是一个全新的独立列表/ map ?我猜
我是一名优秀的程序员,十分优秀!