gpt4 book ai didi

java - Java Collections.unmodificCollection 是否保留底层集合的顺序?

转载 作者:行者123 更新时间:2023-11-30 06:48:37 26 4
gpt4 key购买 nike

我假设集合中不可修改的方法返回底层集合的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com