Java数组扩容算法及Java对它的应用
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对它的应用的更多相关文章
- [转载]Java数组扩容算法及Java对它的应用
原文链接:http://www.cnblogs.com/gw811/archive/2012/10/07/2714252.html Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组 ...
- 使用泛型对java数组扩容
编写一个通用方法,其功能是将数组扩展到10%+10个元素(转载请注明出处) package cn.reflection; import java.lang.reflect.Array; public ...
- java数组扩容
有些时候使用数组代替栈,玩意数组容量不够需要扩容 则: 1.Array.toString();直接遍历打印数组 2.数组扩容采用Array.copyOf(),直接实现数组扩容功能,非常强大 (实际 ...
- 13-02 Java 数组高级算法,Arrays类
冒泡排序 冒泡排序原理 冒泡排序代码: package cn.itcast_01; /* * 数组排序之冒泡排序: * 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处 */ pub ...
- Java 数组扩容
在添加数据到达数组的上限的时候数组进行扩容: public void resizeArrayCaptcity(){ if(size>=arr.length){ Emp [] arr2=new ...
- JAVA 数组算法(复制、查找、插入)
一.复制数组算法 //数组复制算法 public class Test{ public static void main(String[] args){ int[] arrA = {100,800,5 ...
- Java 数组基础,java.util.Arrays
定义数组 方式1(推荐,更能表明数组类型) 方式2(同C语言) 方式3定义时直接初始化 数组运用基础 数组长度 equals() 数组元素不为基本数据类型时 二维数组 二维数组基础 变长的二维数组 j ...
- 数据结构与算法【Java】03---栈
前言 数据 data 结构(structure)是一门 研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构才可以编写出更加漂亮,更加有效率的代码. 要学习好数据结构就要多多考虑如何将生 ...
- java数组与内存控制
1.1数组的初始化 数组是大多数编程语言都提供一种的复合结构,如果程序需要多个类型相同的变量时,就可以考虑定义一个数组.java语言的数组变量时引用类型的变量,因此具有java独有的特性. java数 ...
随机推荐
- Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence
Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence 使用oracle11g插入数据时遇到这样一个问题: 1 --创建测试表-- 2 CREATE T ...
- SQL Server 2008创建oracle链接服务器(心得)
操作系统是32位的情况下,曾经没费太多时间创建好了到oracle的链接服务器.主要要点就是: 1.安装oracle精简客户端.当时我用的是版本比较低的“oracle9i310-客户端简化版”,安装好了 ...
- iOS 图片轮播图(自动滚动)
iOS 图片轮播图(自动滚动) #import "DDViewController.h" #define DDImageCount 5 @interface DDViewContr ...
- VIM配置与管理
VIM是写代码的神器,个人觉得比sublime更强,详情http://zh.wikipedia.org/wiki/Vim.如果用网游做类比,没有经过打造的VIM,也只能算是一只非常有潜力的0级宠物,经 ...
- 判断是否IPv6网络
bool isIPV6Net(const std::string ip_v4, std::string& out_ip) { bool is_v6 = false; struct addrin ...
- CentOS 6.5、6.7 设置静态 ip 教程
CentOS 6.5.6.7 设置静态 ip 教程,可以ping通外网:www.baidu.com ①. 网络适配器(VMware Network Adapter) 选择NAT模式 ②. 设置静态 i ...
- hdu 5901 Count primes
题意: 计数区间$[1, n](1 \leq n \leq 10^{11})$素数个数. 分析: 这里只介绍一种动态规划的做法. 首先要说一下[分层思想]在动态规划中非常重要,下面的做法也正是基于这一 ...
- 我的sql 记录
----------2017-01-03 21:56:56---------- --字符串分隔 start------------- use LDSQL GO CREATE function [dbo ...
- 一看便知spring+quartz定时任务
这是我经过网上收集然后加上自己的测试写的,以便大家使用 标配:已测 注意需要的包:(在已经配置spring 的情况下) quartz-all-1.6.jar spring-context ...
- 浏览器禁止js打开新窗口
在项目中,有个需求是需要ajax获取新地址,然后去打开该页面地址,这样会被浏览器拦截,可以采取以下方式:1.再ajax请求先前,先创建一个新窗口 var newTab = window.open('' ...