- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我假设集合中不可修改的方法返回底层集合的 View 或外观。不言而喻,unmodifyingList
将使用底层列表的顺序,而 unmodfiableSet
可以自由地执行任何操作,因为没有顺序。
我正在使用一个LinkedHashSet
,它是一个集合,但保留了顺序,并且试图公开保留底层顺序的集合的不可修改的 View 。使用 unmodifyingSet
似乎不合适,但我不能使用 unmodifyingList
。我无法保证 unmodifyingCollection
将使用底层集合中的任何顺序,尽管我怀疑它会。
任何人都可以向我指出定义此行为或与之相矛盾的规范吗?
最佳答案
对Collections.unmodifyingXXX
的调用只是创建一个瘦包装器,当进行变异方法调用时,该包装器会抛出异常。所有其他方法调用都会进入底层集合,因此除了原始集合之外,没有其他任何东西会影响排序或其他事物。
包装器没有状态,它仅具有对底层集合的引用。
整个UnmodifyingSet
包装器非常小,并且迭代器(继承自UnmodifyingCollection
)使用底层集合中的迭代器(除了它覆盖remove( )
),迭代顺序与原始集合中完全相同。
static class UnmodifiableSet<E> extends UnmodifiableCollection<E>
implements Set<E>, Serializable {
private static final long serialVersionUID = -9215047833775013803L;
UnmodifiableSet(Set<? extends E> s) {super(s);}
public boolean equals(Object o) {return o == this || c.equals(o);}
public int hashCode() {return c.hashCode();}
}
关于java - Java Collections.unmodificCollection 是否保留底层集合的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43251990/
我假设集合中不可修改的方法返回底层集合的 View 或外观。不言而喻,unmodifyingList 将使用底层列表的顺序,而 unmodfiableSet 可以自由地执行任何操作,因为没有顺序。 我
我是一名优秀的程序员,十分优秀!