• 1.for循环方法:
  • 2.System.arraycopy()方法:
  • 3.Arrays.copyOf()方法:
  • 4.Object.clone()方法:

  

+ View code
/**
* @author zhengbinMac
*/
public class Test {
public static void main(String[] args) {
int[] array1 = {1,2,3,4,5};
// 1.通过for循环
int[] array2 = new int[5];
for(int i = 0;i < array1.length;i++) {
array2[i] = array1[i];
}
for(int i = 0;i < array2.length;i++) {
System.out.print(array2[i]);
}
System.out.println();
//2.通过System.arraycopy()
int[] array3 = new int[5];
System.arraycopy(array1, 0, array3, 0, 5);
for (int i = 0; i < array3.length; i++) {
System.out.print(array3[i]);
}
System.out.println();
//3.通过Arrays.copyOf()
int[] array4 = new int[5];
array4 = Arrays.copyOf(array1, 5);
for (int i = 0; i < array4.length; i++) {
System.out.print(array4[i]);
}
System.out.println();
//4.通过Object.clone()
int[] array5 = new int[5];
array5 = array4.clone();
for (int i = 0; i < array5.length; i++) {
System.out.print(array5[i]);
}
}
}

1.for循环方法:

  代码灵活,但效率低。

2.System.arraycopy()方法:

  通过源码可以看到,其为native方法,即原生态方法。自然效率更高。

public static native void arraycopy(Object src,  int  srcPos,
Object dest, int destPos,
int length);

3.Arrays.copyOf()方法:

  同样看源码,它的实现还是基于System.arraycopy(),所以效率自然低于System.arraycpoy()。

+ View code
public static int[] copyOf(int[] original, int newLength) {
  int[] copy = new int[newLength];
  System.arraycopy(original, 0, copy, 0,
    Math.min(original.length, newLength));
  return copy;
}

4.Object.clone()方法:

  从源码来看同样也是native方法,但返回为Object类型,所以赋值时将发生强转,所以效率不如之前两种。

protected native Object clone() throws CloneNotSupportedException;

如何逆转数组列表?

解决方法

下面的示例反转使用Collections.reverse(ArrayList)方法的数组列表。

import java.util.ArrayList;
import java.util.Collections; public class Main {
public static void main(String[] args) {
ArrayList arrayList = new ArrayList();
arrayList.add("A");
arrayList.add("B");
arrayList.add("C");
arrayList.add("D");
arrayList.add("E");
System.out.println("Before Reverse Order: " + arrayList);
Collections.reverse(arrayList);
System.out.println("After Reverse Order: " + arrayList);
}
}

结果

上面的代码示例将产生以下结果。

Before Reverse Order: [A, B, C, D, E]
After Reverse Order: [E, D, C, B, A]

java集合复制和反转的更多相关文章

  1. 转载---Java集合对象的深度复制与普通复制

    原博文:http://blog.csdn.net/qq_29329775/article/details/49516247 最近在做算法作业时出现了错误,原因是没有弄清楚java集合的深度复制和浅度复 ...

  2. Java 集合系列 12 TreeMap

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  3. Java集合框架类

    java集合框架类图 Collection接口(List.Set.Queue.Stack):

  4. java集合与包装类

    一.集合概述 1 为什么需要使用集合? 引入案例:存储每天产生的新闻. 是要解决数组的局限性(定长),由于数组定长,可能会导致内存浪费或者内存不够. 需要一种技术:能够根据数据量而动态伸缩内存空间一种 ...

  5. 第八章.Java集合

    Java集合类是一种特别有用的工具类,可用于存储数量不等的对象.Java集合大致可分为Set.List.Queue和Map四种体系 Set代表无序.不可重复的集合 List代表有序.重复的集合 Map ...

  6. 【集合系列】- 初探java集合框架图

    一.集合类简介 Java集合就像一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)"丢进"该容器中.从Java 5 增加了泛型以后,Java集合可以记住容器中对象的数 ...

  7. Java集合框架总结2_Map

    1. Map接口概述 Map与Collection并列存在.用于保存具有映射关系的数据:key-value: Map中的key和value都可以是任何应用类型的数据: Map中的key用Set来存放, ...

  8. Java 集合基础详细介绍

    一.Java集合框架概述 集合.数组都是对多个数据进行存储操作的结构,简称Java容器.此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt, .jpg, .avi,数据库中).Jav ...

  9. Java集合最全解析,学集合,看这篇就够用了!!!

    在看集合类之前, 我们要先明白一下概念: 1.数据结构 (1):线性表 [1]:顺序存储结构(也叫顺序表) 一个线性表是n个具有相同特性的数据元素的有限序列.数据元素是一个抽象的符号,其具体含义在不同 ...

随机推荐

  1. Linux内核及分析 第八周 进程的切换和系统的一般执行过程

    学习笔记: 一.进程调度与进程调度的时机分析 1.不同类型的进程有不同需求的调度需求: 第一种分类: —I/O-bound:频繁的进行I/O,通常会花费很多时间等待I/O操作的完成 —CPU-boun ...

  2. Linux内核分析— —构造一个简单的Linux系统MenuOS(20135213林涵锦)

    Linux内核分析— —构造一个简单的Linux系统MenuOS 实验内容 Linux内核的启动过程,从start_kernel到init进程启动 使用实验楼的虚拟机打开shell cd LinuxK ...

  3. Linux实践二:模块

    一.基本模块的实现: 1.进程遍历打印输出 2.简单地编写一个新的系统调用(替换空的系统调用号) 基本模块学到的知识点: 1.相关指令 make oldconfig 配置内核 make 编译内核 ma ...

  4. <<浪潮之巅>>阅读笔记二

    好的文章总是慢慢吸引着你去阅读,这本书的作者是吴军博士,让我很钦佩的是他还是一个很著名的程序员.其实我感觉理科生在写作方面的能力是很欠缺的,我们经常做到了有观点,但是做不到和别人表达清楚你的观点想法, ...

  5. /langversion 的选项“4”无效;必须是 ISO-1、ISO-2、3 或 Default SystemFrameWorkV3

    https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version Edit th ...

  6. Java之JSON操作(gson)

    使用gson包操作JSON数据. 依赖包:gson-2.8.2.jar <dependency> <groupId>com.google.code.gson</group ...

  7. python之函数(可选参数和混合参数)

    代码举例: # 函数可选参数举例,hoppy参数可传可不传 def getinfo(name, age, hoppy=''): if hoppy: print("name:", n ...

  8. 【Linux】自动执行Mysql常用命令脚本

    wamp环境下,我可以手敲一遍,但是lamp环境下我绝对不会手敲一遍 好吧~写脚本的确也是一遍~~~~(>_<)~~~~ 函数和后面的触发器中文档上局部是有错误的,所以大家不要一味的相信文 ...

  9. C# 枚举值 (二) 多属性 操作

    很多时候,我们的枚举值可能需要中英文, 那么可以使用下面的方法: 下面这个类,包含2部分. 1 BaseDescriptionAttribute特性的重载 2 枚举的操作类 EnumOperate n ...

  10. BUPT2017 wintertraining(15) #3 题解

    我觉得好多套路我都不会ヘ(;´Д`ヘ) 题解拖到情人节后一天才完成,还有三场没补完,真想打死自己.( ˙-˙ ) A - 温泉旅店 UESTC - 878  题意 ​ 有n张牌,两人都可以从中拿出任意 ...