gpt4 book ai didi

java - 如何创建深度不可修改的集合?

转载 作者:搜寻专家 更新时间:2023-10-30 19:44:44 25 4
gpt4 key购买 nike

在从 getter 方法返回之前,我经常使集合字段不可修改:

private List<X> _xs;
....
List<X> getXs(){
return Collections.unmodifiableList(_xs);
}

但是如果上面的 X 本身就是一个列表,我想不出一个方便的方法:

private List<List<Y>> _yLists;
.....
List<List<Y>> getYLists() {
return Collections.unmodifiableList(_yLists);
}

上面的问题当然是客户端虽然不能修改List of lists,但是可以从embedded lists中添加/删除Y对象。

有什么想法吗?

最佳答案

我能想到的最好的用途是 ForwardingList from Google Collections .欢迎评论。

private static <T> List<List<T>> unmodifiableList2(final List<List<T>> input) {
return Collections.unmodifiableList(new ForwardingList<List<T>>() {
@Override protected List<List<T>> delegate() {
return Collections.unmodifiableList(input);
}
@Override public List<T> get(int index) {
return Collections.unmodifiableList(delegate().get(index));
}
});
}

关于java - 如何创建深度不可修改的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/415967/

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