`
wgcode
  • 浏览: 593495 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

如何进行object以及Array(数组)的深复制

 
阅读更多

问题:
                深复制是克隆一个数组或者object很有效的方法,深复制以后的对象中的新元素只是原始数据元素的备份,并无内在联系。两个对象的状态是完全一致的,但是元素存放的是不同的引用,指向不同的对象。
        解决方案:
                把你想要深复制的的数组或者object写进字节数组中,然后重置position的位置(把position置为0),最后重新从字节数组中读取出来。
        详细解释:
                这里是一个简单的工具类,封装了一个通过深复制实现的clone方法:

  • package
  • {
  •         import flash.utils.ByteArray;

  •         public class DeepCopyUtil
  •         {
  •                 public static function clone (source : Object) : *
  •                 {
  •                         var array : ByteArray = new ByteArray ();

  •                         array.writeObject (source);
  •                         array.position = 0;
  •                         
  •                         return array.readObject ();
  •                 }
  •         }
  • }

分享到:
评论

相关推荐

    js数组的深拷贝

    在JavaScript中,数组的深拷贝是一个常见的需求,它涉及到数据结构的复制,尤其是在处理复杂对象和嵌套数据时。深拷贝与浅拷贝不同,浅拷贝只是复制引用,而深拷贝会创建一个新的对象,包含原始数组的所有元素,并...

    C#中数组初始化与数组元素复制的方法

    本篇文章将深入探讨C#中数组的初始化与数组元素复制的方法,包括数组的创建、初始化以及如何利用`Array.Copy`方法来高效地复制数组元素。 ### 1. 数组的创建与初始化 在C#中,我们可以通过以下两种方式来创建和...

    实现数组复制常用的5种方式及组合类的深复制(深拷贝)

    在Java编程中,数组复制是常见的操作,有多种方法可以实现这一目标,包括浅复制和深复制。浅复制仅复制对象引用,而深复制则复制整个对象及其引用的对象。这里我们将详细讨论五种常见的数组复制方法,并探讨如何通过...

    JS实现数组深拷贝的方法分析

    在JavaScript中,数组的深拷贝是指创建一个新数组,该数组包含原始数组的所有元素,并且这些元素如果是对象或数组,也会被递归地深度复制。这样,原始数组的任何修改都不会影响到深拷贝后的数组。以下是对JS实现数组...

    android 浅复制和深复制-Java Generic Deep Copy 篇

    通过实现`Cloneable`接口并覆写`clone()`方法,或者使用如上所述的泛型深拷贝工具类,我们可以有效地对数据对象进行复制,保证应用的稳定性和正确性。在处理复杂数据结构时,深拷贝能防止意外的改动影响到原始数据,...

    JavaScript 数组的深度复制解析

    因此,当需要对数组进行深度复制时,即创建一个新的数组,其中包含原始数组的所有元素以及嵌套数组或对象的副本,而不改变原始数组,就需要使用特定的方法。 1. **数组的简单复制** 在JavaScript中,可以使用循环...

    oc-数组倒叙

    首先创建一个新的数组,然后从原数组的末尾开始,逐个复制元素到新数组的开头: ```objc NSUInteger count = [originalArray count]; id *elements = (id *)malloc(sizeof(id) * count); memcpy(elements, ...

    数组字符串向量PPT学习教案.pptx

    数组的复制不能使用简单的赋值语句, Java 中可以使用三种方法复制数组:使用循环语句复制数组的每一个元素,使用 Object 的 clone 方法,使用 System 类中的静态方法 arraycopy。 在 Java 中,数组是一种引用类型...

    JavaScript 复制对象与Object.assign方法无法实现深复制

    而复杂数据类型主要是Object,包括Array(数组)、Date(日期)、RegExp(正则表达式)、Function(函数)以及各种基本包装类型(如Boolean、String、Number等)。 ### 复杂数据类型的复制原理 当我们复制一个复杂...

    C#数组的详细的讲解

    - `IndexOf(object)`、`IndexOf(object, int)`、`IndexOf(object, int, int)`:在数组中查找指定值的索引,可以从指定位置开始搜索,或者限制搜索范围。 - `LastIndexOf(object, int, int)`:从指定位置开始反向查找...

    js代码-数组、对象的复制

    对象复制比数组复制复杂,因为它们包含引用。JavaScript提供了以下几种复制方法: 1. **Object.assign()** 方法:将一个或多个源对象的属性复制到目标对象,并返回目标对象。注意,这是浅复制,只复制一层属性。 `...

    java关于数组(学习笔记)

    在Java中,数组属于引用数据类型,它们的父类是Object类,这意味着数组对象存储在堆内存中。 数组可以存储两种类型的数据:基本数据类型和引用数据类型。基本数据类型包括int、double、char等,而引用数据类型则指...

    C#调用delphi写的OCX, 数组传递

    5. **性能考虑**:由于数组传递涉及到数据复制,所以对于大数据量的数组,可能会有性能影响。考虑优化数据交换的方式,比如使用引用计数的智能指针或者一次性传递整个数据结构。 6. **异常处理**:跨语言调用可能会...

    Python numpy.array()生成相同元素数组的示例

    总结来说,本文档通过实例介绍了如何利用Python的NumPy库中的numpy.array()函数创建数组,并且演示了如何使用循环以及数组切片赋值来生成含有相同元素的数组。同时,也指出了在使用NumPy时应尽量避免不必要的循环,...

    javascript二维数组和对象的深拷贝与浅拷贝实例分析

    **深拷贝**则是创建一个全新的对象或数组,不仅复制原始对象或数组的属性值,还对每个对象类型的属性进行递归复制,确保新对象与原始对象完全独立,不共享任何引用。这意味着修改深拷贝的对象不会影响原始对象。实现...

    字符串数组操作类

    通过对该类的实现细节进行分析,我们不仅可以了解如何设计和实现一个简单的字符串数组操作类,还可以学习到如何在 C# 中处理数组的基本操作以及如何进行异常处理。此类设计不仅适用于简单的数据操作场景,也为更复杂...

    数组类模版及调用 arraylist

    2. 非类型安全:ArrayList存储的是Object对象,因此在访问元素时需要进行类型转换。 3. 自动内存管理:.NET框架会自动处理内存分配和释放。 4. 异常处理:ArrayList操作会抛出异常,如`IndexOutOfRangeException`和`...

    javascript object array方法使用详解

    JavaScript中的Array对象提供了很多实用的方法,用于操作数组。在JavaScript编程中,数组是最基础和常用的数据结构之一,它提供了一系列处理元素集合的方法。本文将详细介绍Array对象中几个常用的方法,包括push、...

    dotnet 6 数组拷贝性能对比.rar

    2. **Array.CopyTo()**:与Array.Copy()类似,但是它是数组对象的方法,用于将整个数组或部分数组复制到另一个数组。 3. **Array.Clone()**:创建数组的一个浅拷贝,仅复制引用,而不复制对象本身。对于引用类型,...

Global site tag (gtag.js) - Google Analytics