我有一些带List-property的类:
class Foo {
private List<int> myList;
}
Run Code Online (Sandbox Code Playgroud)
我想提供对此字段的访问权限仅供读取.
即我希望属性可以访问Enumerable,Count等,并且无法访问Clear,Add,Remove等.我怎么能这样做?
读过这个问题是不可变的还是不可变的?并阅读我之前关于不变性的问题的答案,我仍然有点困惑有效实现简单的LinkedList是不可变的.在数组方面似乎很容易 - 复制数组并返回基于该副本的新结构.
据说我们有一个通用的Node类:
class Node{
private Object value;
private Node next;
}
Run Code Online (Sandbox Code Playgroud)
并基于上面的类LinkedList允许用户添加,删除等.现在,我们如何确保不变性?我们在插入元素时是否应该递归地复制对列表的所有引用?
我也对Immutable或不可变的答案感到好奇吗?提到了在二叉树的帮助下导致log(n)时间和空间的cerain优化.另外,我在某处读到,在前面添加一个元素也是0(1).这让我很困惑,好像我们没有提供参考文献的副本,然后实际上我们正在修改两个不同来源的相同数据结构,这打破了不变性......
您的任何答案是否都适用于双向链接列表?我期待着对任何其他问题/解决方案的任何回复/指示.在此先感谢您的帮助.
如果你有一个不可变列表,你希望它总是在你要求的时候返回对同一个对象的引用
list.get(0)
Run Code Online (Sandbox Code Playgroud)
我的问题是,您是否希望能够改变对象并在下次从列表中获取突变时反映出变异?