Java数组扩容算法及Java对它的应用

时间:2022-04-04 00:43:45

1)Java数组对象的大小是固定不变的,数组对象是不可扩容的。利用数组复制方法可以变通的实现数组扩容。System.arraycopy()可以复制数组。Arrays.copyOf()可以简便的创建数组副本。

创建数组副本的同时将数组长度增加就变通的实现了数组的扩容。

import java.util.Arrays;
2
3 /** 数组变长算法!
4 * 数组对象长度不可改变
5 * 但是很多实际应用需要长度可变的数组
6 * 可以采用复制为容量更大的新数组, 替换原数组, 实现变长操作
7 * */
8 public class ArrayExpand {
9 public static void main(String[] args) {
10 //数组变长(扩容)算法!
11 int[] ary={1,2,3};
12 ary=Arrays.copyOf(ary, ary.length+1);
13 ary[ary.length-1]=4;
14 System.out.println(Arrays.toString(ary));//[1, 2, 3, 4]
15 //字符串连接原理
16 char[] chs = { '中', '国' };
17 chs = Arrays.copyOf(chs, chs.length + 1);
18 chs[chs.length - 1] = '北';
19 chs = Arrays.copyOf(chs, chs.length + 1);
20 chs[chs.length - 1] = '京';
21 //字符数组按照字符串打印
22 System.out.println(chs);//中国北京
23 //其他数组按照对象打印
24 System.out.println(ary);//[I@4f1d0d
25 }
26 }

Java数组扩容算法及Java对它的应用的更多相关文章

  1. [转载]Java数组扩容算法及Java对它的应用

    原文链接:http://www.cnblogs.com/gw811/archive/2012/10/07/2714252.html Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组 ...

  2. 使用泛型对java数组扩容

    编写一个通用方法,其功能是将数组扩展到10%+10个元素(转载请注明出处) package cn.reflection; import java.lang.reflect.Array; public ...

  3. java数组扩容

    有些时候使用数组代替栈,玩意数组容量不够需要扩容 则: 1.Array.toString();直接遍历打印数组 2.数组扩容采用Array.copyOf(),直接实现数组扩容功能,非常强大   (实际 ...

  4. 13-02 Java 数组高级算法,Arrays类

    冒泡排序 冒泡排序原理 冒泡排序代码: package cn.itcast_01; /* * 数组排序之冒泡排序: * 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处 */ pub ...

  5. Java 数组扩容

    在添加数据到达数组的上限的时候数组进行扩容: public void resizeArrayCaptcity(){ if(size>=arr.length){ Emp [] arr2=new   ...

  6. JAVA 数组算法(复制、查找、插入)

    一.复制数组算法 //数组复制算法 public class Test{ public static void main(String[] args){ int[] arrA = {100,800,5 ...

  7. Java 数组基础,java.util.Arrays

    定义数组 方式1(推荐,更能表明数组类型) 方式2(同C语言) 方式3定义时直接初始化 数组运用基础 数组长度 equals() 数组元素不为基本数据类型时 二维数组 二维数组基础 变长的二维数组 j ...

  8. java数组与内存控制

    1.1数组的初始化 数组是大多数编程语言都提供一种的复合结构,如果程序需要多个类型相同的变量时,就可以考虑定义一个数组.java语言的数组变量时引用类型的变量,因此具有java独有的特性. java数 ...

  9. Java数组的内存管理

    Java数组的内存管理 Java语言是典型的静态语言,因此Java的数组是静态的,即当数组被初始化之后,该数组的长度是不可变的.Java程序中的数组必须经初始化才能使用.所谓初始化,就是当数组对象的元 ...

随机推荐

  1. [异常解决] ubuntu上安装JLink驱动遇到的坑及给后来者的建议

    一.前言 最近将整个电脑格式化,改成了linux操作系统 希望这样能让自己在一个新的世界探索技术.提升自己吧- win上的工具用多了,就不想变化了- 继上一篇<ubuntu上安装虚拟机遇到的问题 ...

  2. Linux的学习--使用PuTTY

    交代一下背景,在笔记本上装虚拟机,在虚拟机里装了Ubuntu系统,但用着一直感觉很卡.刚好同学有旧的不用的笔记本,就拿来装了一个Ubuntu. 想要从我的笔记本上控制Ubuntu系统,于是就找到了pu ...

  3. ILNumerics项目的应用之线性方程

          ILNumerics是一个开源的数值项目,一种NET框架的高性能数学库,它简化了各种数学算法的使用,优化到了C和FORTRAN的速度.现在它提供了一个支持"任何CPU" ...

  4. &lbrack;转&rsqb;ionic Accordion list three levels

    简化后的主要代码: $scope.groups = []; for (var i = 0; i < 2; i++) { $scope.groups[i] = { name: i, items: ...

  5. JAVA G1收集器 第11节

    JAVA G1收集器 第11节 上两章我们讲了新生代和年老代的收集器,那么这一章的话我们就要讲一个收集范围涵盖整个堆的收集器——G1收集器. 先讲讲G1收集器的特点,他也是个多线程的收集器,能够充分利 ...

  6. &period;Net Core在X86上实现Interlocked&period;Increment&lpar;ref long&rpar;的方式

    因为在X86上long会被分割为两个int进行操作, 那么Interlocked.Increment的实现成为了一个问题. 在一番搜索后未发现有现成的文章解释这个问题,于是我就动手分析了. 这篇是笔记 ...

  7. Android工程化开发这门学科的看法

    http://www.cnblogs.com/unruledboy/p/DevCareer.html http://coolshell.cn/articles/4561.html http://blo ...

  8. &lbrack;bzoj1692&rsqb;&lbrack;队列变换&rsqb;

    题目链接 思路 首先肯定想到贪心,从队尾和队首取更小的那个. 但是如果遇到队尾和队首一样大的情况呢,总不能再挨个往前比较.所以就把整个字符串倒过来再挂到现在字符串的后面,也就是把当前字符串对称过去.然 ...

  9. 对 UDP 的一些思考

    先放两个链接 快速可靠协议-KCP 可靠 UDP 传输 最近在玩王者荣耀,发觉两件事: 1. 可以 4G 和 wifi 无痛切换 2. 当网络不好的时候,发出去的消息并不保证到达服务器.比如你在很卡的 ...

  10. Linux:进程

    进程 一.简略操作 1.查看进程:ps2.查看进程资源占用量:top3.查看进程关系(进程树):pstree4.查看当前系统信息:uname -a 二.详细操作 1.查看进程:ps 2.查看进程资源占 ...