酷站(www.ku0.com)-致力于为互联网从业者提供动力!

热门关键词:  企业  as  baidu  c4rp3nt3r  美女
阿里云爆款特惠,精选爆款产品低至0.55折

数组在java中的扩容的方法详解

来源:转载 作者:秩名 人气: 发布时间:2021-01-26
本篇文章主要介绍了数组在java中的扩容的方法详解,对大家的学习或者工作具有一定的参考学习价值,感兴趣的小伙伴们可以参考一下,也感谢大家对酷站(ku0.com)的支持。

在使用数组的时候,因为大小的限制,难免会出现不够用的现象。直接给数据对象扩容是不可行的,这时候就需要我们找寻一些其他的方法。本篇先为大家简单分析扩容的原理,然后创建一个数组供大家使用,最后提供两种数组扩容方法:for循环和Arrays,下面一起来看具体的操作。

1.扩容的原理

(1)Java数组对象的大小是固定不变的,数组对象是不可扩容的。

(2)利用数组复制方法可以变通的实现数组扩容。

(3)System.arraycopy()可以复制数组。

(4)Arrays.copyOf()可以简便的创建数组副本。

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

2.先创建数组

import java.util.Arrays;
//数组的扩容示例
public class Test {
public static void main(String [] args){
//创建一个原始数组,并做好初始化。
// int [] arry = {1,3,5,7,9};
int arry[] =new int[]{1,3,5,7,9};
int arry1[]=new int[7];//新建一个新数组这里的7=arry.length+需要扩容的长度
System.out.println("打印原始数组的长度为:"+arry.length);
System.out.println("打印新数组的长度为:"+arry1.length);
//验证该数组有没有创建完成,可以获取一下数组元素看看能不能成功。
// System.out.println(arry[1]);
//把从旧数组中获取的数据一个一个的存到新的数组里面去,并新增两个数:11,13。
//如何把数据存到数组里面去,使用arry1[0]=1;
/*
 

3.方法一:循环遍历原始数组arry,长度是固定的,所以用for循环。

//1、先完成复制数组
for(int i=0;i<arry.length;i++){
arry1[i] = arry[i];
}
//2、再完成赋值插入操作,即已完成数组的扩容操作。
arry1[5]=11;
arry1[6]=13;
System.out.println("新数组为:"+arry1[5]);
System.out.println("新数组为:"+arry1[6]);
*/
/*
 

4.方法二:使用java的util包的Arrays类的copyOf(原数组名,新数组长度)方法来进行复制。

arry1 = Arrays.copyOf(arry,arry.length+2);
arry1[5] = 11;
arry1[6] = 13;
System.out.println("新数组为:"+arry1[5]);
System.out.println("新数组为:"+arry1[6]);

以上就是数组在java中的扩容方法,这两种方法相对新手而言,是非常容易实现扩容的。

相关实例扩展:

import java.util.Arrays;
public class HelloWorld {
	public static void main(String[] args){
	//	Scanner s = new Scanner(System.in);
	//	System.out.println("请输入一个数字");
	//	int num = s.nextInt();
	int []a = {1,2,3,4,5};
	int []b = new int[a.length] ;
		//1、源数组
		//2、源数组的哪个位置开始
		//3、目标数组
		//4、目标数组的哪个位置开始存放
		//5、拷贝几个
		//System.arraycopy(a, 0, b, 0, a.length);
		//Demoe.PrintArray(b);
		//扩容--->扩容了一倍
		//a = Arrays.copyOf(a, 2*a.length) ;
		//Demoe.PrintArray(a);
		a = insertArray(a , 3 , 100) ;
		//打印数组
		System.out.println(Arrays.toString(a));
	}
	//写一个函数,向整数数组的任意pos位置插入一个元素value
	public static int[] insertArray(int []a , int pos , int value){
		if(pos < 0 || pos > a.length + 1) //索引下标不对,直接返回源数组 
			return a ;
		//放入一个元素,先扩容,后复制
		a = Arrays.copyOf(a, a.length+1) ;
		for(int i = a.length - 1 ; i > pos ; i--){
			a[i] = a[i-1] ; //后移动
		}
		a[pos] = value ;
		return a ;
	}
}

版权声明:本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 959677720#qq.cn(#换@) 举报,一经查实,本站将立刻删除。
原文链接:https://www.py.cn/java/shuzu/23313.html

相关文章

  • springboot bean扫描路径的实现方法

    springboot bean扫描路径的实现方法

    1:默认扫描启动类所在路径下所有的bean 2:可以在启动类中添加注解,手动指定扫描路径: @ComponentScan(basePackages = {com.xxx.service1.*,com.xxx.service2.**}) 补充:SpringBoot 是如何通过 @SpringBootApplication 扫描项目中的 Be......
    01-28
  • 数组在java中的扩容的方法详解

    数组在java中的扩容的方法详解

    在使用数组的时候,因为大小的限制,难免会出现不够用的现象。直接给数据对象扩容是不可行的,这时候就需要我们找寻一些其他的方法。本篇先为大家简单分析扩容的原理,然后创建一个数组供大家使用,最后提供两种数组扩容方法:for循环和A......
    01-26
  • java中Hibernate缓存形式总结

    java中Hibernate缓存形式总结

    对于数据的访问来说,肯定是在有缓存的情况下运行快一些。对于Hibernate这种与数据库结合紧密的框架来说,在调用数据的时候肯定会有缓存的出现,其中有三种缓存的形式存在:一级缓存、二级缓存和查询缓存。下面我们就Hibernate中这三种缓......
    01-25
  • Springboot实现XSS漏洞过滤

    Springboot实现XSS漏洞过滤

    场景:可以在页面输入框输入JS脚本,攻击者可以利用此漏洞执行恶意的代码! 问题演示 所以我们要对于前端传输的参数做处理,做统一全局过滤处理 既然要过滤处理,我们首先需要实现一个自定义过滤器 总共包含以下四部分 XssUtil XssFilter......
    01-22
  • 详解Eclipse中安装反编译工具Fernflower的方法(Enhanced Class

    详解Eclipse中安装反编译工具Fernflower的方法(Enhanced Class

    IntelliJ IDEA一个吸引人的地方在于,他有比较好的反编译工具,这让Eclipse用户牙痒痒。但不要紧,本文介绍如何在Eclipse IDE中使用IntelliJ IDEA的反编译工具Fernflower。 为啥需要反编译 很多jar不提供源码,那么打开class是这个鸟样。......
    01-21
  • Spring如何实现自定义监听器

    Spring如何实现自定义监听器

    在一般的javaWeb项目中经常有一些缓存是需要再项目启动的时候加载到内存中,这样就可以使用自定义的监听器来实现。 1、在web.xml中声明 !-- 自定义监听 启动加载系统参数 -- listener listener-classcom.cn.framework.constant.OmsConfigL......
    01-21
  • 详解java封装实例用法

    详解java封装实例用法

    我们可以选择把类的方法、属性装起来,便于日后的程序书写和使用,这种处理方法就是封装的思想。因为封装类之后,其他的外部类方法就不能在混入其中,对代码的安全性进行了提高。接下来我们就对java中封装的概念、目的进行介绍,然后在实......
    01-17
  • 详解java中“==“和equals()的区别

    详解java中“==“和equals()的区别

    今天我们探讨一下Java中==与equals()的区别 ==:关系运算符 在基本数据类型中比较两个值的内容是否相等 在引用类型型中比较的是两个对象的地址是否相等 equals()是Object类中的方法 1.基本数据类型无法使用equals()方法 2.在引用类型中若......
    01-17
  • java中gc算法实例用法详细介绍

    java中gc算法实例用法详细介绍

    在我们对gc中的算法有基本概念理解后,要把算法的理念实现还需要依托实际垃圾收集器的使用。因为光靠一些简单的原理不足以支撑整个程序的运行,在回收机制上有专门的收集器。下面我们就垃圾收集器的概念、使用注意事项、收集器图解进行介......
    01-17
  • Mybatis的缓存详细介绍

    Mybatis的缓存详细介绍

    Mybatis的缓存 mybatis是一个查询数据库的封装框架,主要是封装提供灵活的增删改sql,开发中,service层能够通过mybatis组件查询和修改数据库中表的数据;作为查询工具,mybatis有使用缓存,这里讲一下mybatis的缓存相关源码。 缓存 在计......
    01-16

最新更新