`

java拷贝数组的方法

 
阅读更多

Tomcat源码中提供的一种拷贝数组的方式参考:

public final class LifecycleSupport {
    /**
     * The set of registered LifecycleListeners for event notifications.
     */
    private LifecycleListener listeners[] = new LifecycleListener[0];
    /**
     * Add a lifecycle event listener to this component.
     *
     * @param listener The listener to add
     */
    public void addLifecycleListener(LifecycleListener listener) {

      synchronized (listeners) {
          LifecycleListener results[] =
            new LifecycleListener[listeners.length + 1];
          for (int i = 0; i < listeners.length; i++)
              results[i] = listeners[i];
          results[listeners.length] = listener;
          listeners = results;
      }

    }
    …………………………
}

 第二种情况:

 
/**
 * 对象的浅拷贝
 * interested = (LifecycleListener[]) listeners.clone();
 */
public void fireLifecycleEvent(String type, Object data) {

        LifecycleEvent event = new LifecycleEvent(lifecycle, type, data);
        LifecycleListener interested[] = null;
        synchronized (listeners) {
            interested = (LifecycleListener[]) listeners.clone();
        }
        for (int i = 0; i < interested.length; i++)
            interested[i].lifecycleEvent(event);

    }

 

分享到:
评论

相关推荐

    Java拷贝数组方法Arrays.copyOf()是地址传递的证明实例

    `Arrays.copyOf()` 方法是Java提供的一个用于拷贝数组的便捷工具,但它的行为可能与初学者的直觉不同。本篇文章将深入探讨`Arrays.copyOf()` 方法的工作原理,并通过实例证明它执行的是地址传递。 `Arrays.copyOf()...

    java编程中拷贝数组的方式及相关问题分析

    Java编程中拷贝数组的方式有多种,主要可以分为四种方式:利用for循环、直接赋值、利用Arrays的copyof方法和System.arraycopy方法。 第一种方式:利用for循环 这是一种最基本的数组拷贝方式,通过循环遍历源数组,...

    java-数组与方法及面向对象基础

    本教程将深入探讨Java中的数组、方法以及面向对象编程的基础概念,为初学者提供一个全面的学习指南。 一、数组 数组在Java中是存储同一类型数据的集合,可以看作是一个可变大小的容器。数组的定义和初始化通常包含...

    java 数组 PPT

    2. 深拷贝与浅拷贝:数组拷贝有深拷贝(复制整个数组及其中的元素)和浅拷贝(只复制数组引用)之分,使用`System.arraycopy()`方法可以实现深拷贝。 3. 排序:Java的`Arrays`类提供了对数组进行排序的方法,如`...

    java数组

    Java标准库中的`java.util.Arrays`类提供了一系列静态方法,用于数组的排序、复制、填充等操作。例如,排序一个整数数组: ```java Arrays.sort(numbers); // 对numbers数组进行升序排序 ``` 八、数组的拷贝 `System...

    java编程 java数组编程

    2.将有10个元素的数组a1 拷贝至含有15个元素的数组b1的一段位置。 3.将一个已存入数组中的值45,89,7,6,0,按0,6,7,89,45的次序打印出来。 4. 求一个3*3矩阵对角线元素之和。 5.设某个一维数组中有25个...

    java 一维数组的创建与使用

    2. **数组拷贝**:`System.arraycopy()`方法可以用来复制数组的一部分或全部。 3. **数组比较**:虽然数组本身是对象,但比较两个数组是否相等时,需要注意的是它们的引用是否相同,而非内容是否一致。若要比较内容...

    关于数组创建以及拷贝时的内存分配

    在C++中,可以使用`std::copy`函数或`std::vector`的`assign`方法来高效地复制数组。而在Python中,考虑使用`numpy`库,它提供了高效的数组操作和内存管理。 此外,了解内存分配的细节有助于避免内存泄漏和悬挂指针...

    java 复制数组的资源

    以下将详细阐述Java中复制数组的主要方法: 1. **浅拷贝(Shallow Copy)**: - `System.arraycopy()`:这是Java中最直接、最高效的方式来复制数组。它会创建一个新的数组,并将源数组中的元素值逐个复制到新数组...

    第03讲 JAVA数组.ppt

    数组拷贝可以通过赋值操作或者使用`System.arraycopy()`方法实现。赋值操作(如`bb = aa`)只会让两个数组引用指向同一块内存,而`System.arraycopy()`方法则会真正复制数组的内容到另一块内存。 在处理大量数据时...

    java高端技术课程--Java数组如何实现复制

    本篇文章将深入探讨Java中数组的复制方法及其相关知识点。 1. **浅拷贝与深拷贝** 在Java中,数组的复制分为浅拷贝和深拷贝两种。浅拷贝仅复制数组本身,不复制其元素,而深拷贝则会复制整个对象包括嵌套的对象。...

    取指定字节数组中的子数组 一个很好类例子

    在Java编程中,这样的操作通常是通过使用数组拷贝或者特定的类如`java.nio.ByteBuffer`来实现的。描述中提到的"博文链接"提供了进一步了解这个话题的资源,但在这里,我们将基于通常的编程实践来探讨这个主题。 在...

    Java中数组的声明.doc

    在Java中,复制数组最常用的方法是使用`java.lang.System`类中的`arraycopy`方法。该方法可以高效地将一个数组的一部分或全部复制到另一个数组中。 **方法签名**: ```java public static void arraycopy(Object ...

    java数组资料

    8. **数组的拷贝** - `System.arraycopy()`方法可用于复制数组的一部分或全部到另一个数组。 - 例如:`System.arraycopy(srcArray, srcPos, destArray, destPos, length);` 9. **数组的比较** - 数组本身不支持...

    java数组使用视频教程

    5. **数组操作**:包括拷贝数组、比较数组、数组的复制等操作。 6. **异常处理**:访问越界会抛出`ArrayIndexOutOfBoundsException`,需要进行异常处理。 7. **数组与集合框架对比**:比较数组和List、ArrayList等...

    Java_数组练习答案 (2).docx

    12. **方法参数传递**:在Java中,向方法传递数组参数时,传递的是数组的引用,而不是复制整个数组。 13. **线性查找**:线性查找的平均查找长度是n*(n-1)/2,效率较低,适用于小规模或未排序的数组。 14. **初始...

    Java-数组练习题目(汇编).pdf

    10. 不是数组复制方法的是C,因为不能直接用“=”进行数组复制,它只是拷贝引用。 11. 数组a的第三个元素表示为B. `a[2]`,数组索引从0开始。 12. 当访问无效的数组下标时,会B. 抛出异常,具体是`...

    java数组教学及练习

    此外,`clone()`方法也可以创建数组的一个副本,但需要注意深拷贝和浅拷贝的区别。 6. **数组的排序**: 对于整数数组,可以使用Java内置的`Arrays.sort()`方法进行快速排序。该方法使用了TimSort算法,保证了稳定...

    java关于数组(学习笔记)

    在Java的主方法`public static void main(String[] args)`中,`args`是一个特殊的二维数组,用于接收命令行参数。当程序启动时,用户在命令行提供的参数会被分割并存储到`args`数组中。 数组的扩容是一个需要注意的...

    Java数组编程 多个java编程

    2.将有10个元素的数组a1 拷贝至含有15个元素的数组b1的一段位置。 3.将一个已存入数组中的值45,89,7,6,0,按0,6,7,89,45的次序打印出来。 4. 求一个3*3矩阵对角线元素之和。 5.设某个一维数组中有25个...

Global site tag (gtag.js) - Google Analytics