`
xinglongbing
  • 浏览: 152476 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Immutable和Mutable对象

 
阅读更多

对于Mutable对象的写操作要格外小心。

如:ArrayList是Mutable的,我们如果将多个引用指向同一个ArrayList对象,只要其中一个引用改变该对象中的内容可能会造成其他引用在操作该对象时产生不正确的结果。另外,对于迭代器,在遍历某个容器中的对象时,一定不要修改其中的对象(添加或删除),这样也可能造成不一致的现象。

 

ArrayList a = new ArrayList();

ArrayList b = new ArrayList();

a=arrayList;

b=arrayList;

..

..

a.clear(); //arrayList中的对象已经清空

..

..

b.get(); //此时b再去引用其中的对象可能造成索引非法的错误

 

 

for(int i=0; i<arrayList.size(); i++){

 

    if(){

     

    }

 

    arrayList.add(); //该容器的容量也在不断的递增 可能造成栈溢出

}

分享到:
评论

相关推荐

    Immutable 在 JavaScript 中的应用

    在 JavaScript 中,对象是引用类型的数据,其优点在于频繁的修改对象时都是在原对象的基础上修改,并不需要重新创建,这样可以有效的利用内存,不会造成内存空间的浪费,对象的这种特性可以称之为 Mutable,中文的...

    python面试题100.docx

    对象有两种:可更改(mutable)和不可更改(immutable)。在 Python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list, dict 等则是能够修改的对象。 当一个引用传递给函数的时候,函数自动复制一份引用...

    12.PythonicOOP上1

    值则指对象的当前状态,对于不可变对象(immutable object),如整数、浮点数、字符串和元组,它们的值在创建后不能更改。而对于可变对象(mutable object),如列表、字典和集合,值可以修改。 特殊方法是Python中...

    Programming With Objective-C (Apple Developer)

    **可变性确定所表示的值是否可以更改**:在Objective-C中,可以通过指定属性的可变性(mutable或immutable)来控制其是否可以被修改。 **类继承自其他类**:Objective-C支持单继承模型。子类可以继承父类的属性和...

    python核心编程第二版答案.docx

    2. **不可变(Immutable)与可变(Mutable)类型**: - **不可变类型**:包括数字、字符串和元组。一旦创建,它们的值不能更改。 - **可变类型**:如列表和字典。列表可以添加、删除或修改元素,字典则可以修改其...

    Effective Objective-C 2.0

    集合类遵循了不可变(immutable)和可变(mutable)的区分。 9. GCD和NSOperation:GCD(Grand Central Dispatch)和NSOperation是Objective-C中用于处理多线程和并发的高级抽象。GCD提供了一种简单的API来描述任务...

    python面试题.pdf

    在 Python 中,函数参数传递可以分为两种:可更改的对象(mutable)和不可更改的对象(immutable)。在函数调用时,函数会自动复制一份引用,函数内部的引用和外部的引用没有关系。例如,代码一中的 a = 1,函数 fun...

    String和StringBuffer 的区别 .txt

    在Java编程语言中,`String`和`StringBuffer`是非常重要的两个类,它们分别用于处理不可变(immutable)和可变(mutable)字符串。理解这两个类之间的区别对于有效地管理和操作字符串至关重要。 #### 一、String...

    Scala-part2集合框架

    Scala中的集合分为两大类:不可变集合(`immutable`)与可变集合(`mutable`)。不可变集合一旦被初始化后就无法改变其内容或结构,而可变集合则可以在程序运行过程中动态地增加、删除或修改其中的数据。 - **不可...

    深入体会Ruby的String类型有哪些强项

    Ruby 的 String 是 mutable,这意味着它可以在创建后进行修改,而不像 Java 和 C# 中的 String,一旦创建就是 immutable,任何操作都会创建新的 String 对象。 在 Ruby 中,对于相同的字面量字符串,如 "abc",不会...

    Python基础——笔试面试利器

    在Python中,对象分为两种类型:“可更改”(mutable)对象和“不可更改”(immutable)对象。 - **不可更改对象**:包括字符串(`string`)、元组(`tuple`)以及数字类型(`number`)。这些类型的对象一旦创建,...

    python变量赋值方法(可变与不可变)

    一、可变对象和不可变对象 Python在heap中分配的对象分成两类:可变对象和不可变对象。所谓可变对象是指,对象的内容可变,而不可变对象是指对象内容不可变。 不可变(immutable):int、字符串(string)、float、...

    2019-软件构造-期末试题1

    - 不可变对象(immutable object)是指一旦创建就无法改变其状态的对象。被 `static` 和 `final` 修饰的 `Date` 对象(A)并不一定是不可变的,因为 `Date` 类在某些版本的 Java 中是可变的。选项 B 中,使用 State...

    String和StringBuilder类的区别

    - **String**:由于每次对字符串的修改都会导致新对象的创建,因此在进行大量字符串拼接时,使用 `String` 类会导致较高的内存消耗和性能开销。 - **StringBuilder**:由于 `StringBuilder` 允许在原有对象上进行...

    初次接触python的作业.zip

    3. **列表、元组和字典**:Python提供了多种数据结构,其中最常用的是列表(mutable)、元组(immutable)和字典(key-value对)。它们在存储和操作数据时非常有用。 4. **函数**:函数是组织代码的单元,可以重用...

Global site tag (gtag.js) - Google Analytics