编写一个通用方法,其功能是将数组扩展到10%+10个元素(转载请注明出处)

 package cn.reflection;

 import java.lang.reflect.Array;

 public class ArrayGrowTest {
public static void main(String[] args){
ArrayGrowTest growTest=new ArrayGrowTest();
int[] aInt={1,2,3,4};
System.out.print("原数组:");
growTest.printArray(aInt);
aInt=(int[]) growTest.goodArrayGrow(aInt);
System.out.print("扩容后数组:");
growTest.printArray(aInt); String[] aStr={"hello","world","ni","hao","ma"};
System.out.print("原数组:");
growTest.printArray(aStr);
aStr=(String[]) growTest.goodArrayGrow(aStr);
System.out.print("扩容后数组:");
growTest.printArray(aStr);
}
/**
* 数组扩容方法,支持不同数组类型
* @param a 原数组
* @return newArray 新数组
*/
public Object goodArrayGrow(Object a){
Class cl=a.getClass();
if(!cl.isArray()){
return null;
}
Class componentType=cl.getComponentType(); //使用Class类的getComponentType方法确定数组对应的类型
int length=Array.getLength(a); //原长度
int newLength=length*11/10+10; //新长度
Object newArray=Array.newInstance(componentType, newLength); //实例化新数组
//为新数组赋值,a代表原数组,第一个0代表原数组复制起始位置,newArray代表新数组,第二个0代表新数组放值起始位置,length代表从原数组中复制多长到新数组
System.arraycopy(a, 0, newArray, 0, length);
return newArray;
}
/**
* 输出数组内容
* @param a 需要输出的数组
*/
public void printArray(Object a){
Class cl=a.getClass();
if(!cl.isArray()){
return ;
}
Class componentType=cl.getComponentType();
int length=Array.getLength(a);
System.out.print(componentType.getName()+"["+length+"]={");
for(int i=0;i<length;i++){
System.out.print(Array.get(a, i)+ " ");
}
System.out.println("}");
} }

使用泛型对java数组扩容的更多相关文章

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

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

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

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

  3. java数组扩容

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

  4. Java 数组扩容

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

  5. [改善Java代码]不能初始化泛型参数和数组

    泛型类型在编译期被擦除,我们在类初始化时将无法获得泛型的具体参数,比如这样的代码: class Foo<T>{ //private T t =new T();//报错Cannot inst ...

  6. -Java-Runoob-高级教程-实例-数组:09. Java 实例 – 数组扩容

    ylbtech-Java-Runoob-高级教程-实例-数组:09. Java 实例 – 数组扩容 1.返回顶部 1. Java 实例 - 数组扩容  Java 实例 以下实例演示了如何在数组初始化后 ...

  7. Java - 数组解析

    java提高篇(十八)-----数组之一:认识JAVA数组 一.什么是数组 数组?什么是数组?在我印象中的数组是应该这样的:通过new关键字创建并组装他们,通过使用整形索引值访问它的元素,并且它的尺寸 ...

  8. 藏在Java数组的背后,你可能忽略的知识点

    目录 引言 概念 区别于C/C++数组 区别于容器 数组特性 随机访问 Java数组与内存 解惑 数组的本质 Java中的数组是对象吗? Java中数组的类型 Java中数组的继承关系 参考资料 引言 ...

  9. java数组知识总结(一)//按类

    在线api  目录: 零/数组(基本元素) 1.  声明一个数组 2.  创建一个数组 3.  数组名.length 4.  数组的引用 一/java.lang.reflect.Array     / ...

随机推荐

  1. Proud Merchants(01背包)

    Proud Merchants Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) To ...

  2. 基于HTML5 Canvas的网页画板实现教程

    HTML5的功能非常强大,尤其是Canvas的应用更加广泛,Canvas画布上面不仅可以绘制任意的图形,而且可以实现多种多样的动画,甚至是一些交互式的应用,比如网页网版.这次我们要来看的就是一款基于H ...

  3. meta标签的少许语法,慢慢收集中...

    收集了一些meta的语法,也将不断的更新.不断做点滴的收集,总之,为了前端这些东西呀,我也是操碎了心... 1 <meta http-equiv="Content-Type" ...

  4. 第9课_2_dbsoft安装

    三 安装Oracle Database 数据库软件 1.上传数据库安装包到虚拟机上,unzip命令解压database软件,赋予正确的权限和属主,在以oracle身份登录进行图形界面安装 unzip ...

  5. 20160115--Hibernate

    package com.hanqi.dao; import static org.junit.Assert.*; import java.util.*; import org.hibernate.se ...

  6. Linux网络管理——子网掩码

    1. 网络基础 .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB",&q ...

  7. Javascript 匀速运动——应用案例:网站常用功能分享到

    网站上会经常用到Javascript 中的运动,这次与大家分享一下一些运动的基本应用 . 方便大家在开发中能够直接使用. 代码简单易懂,适用于初学者.最后会一步一步整理出一套自己的运动框架. 应用案例 ...

  8. Case when 的用法,简单Case函数

    Case when 的用法,简单Case函数 简单CASE表达式,使用表达式确定返回值. 语法: CASE search_expression WHEN expression1 THEN result ...

  9. 几家SIEM

    HP Arcsight Imperva is a HP Business Partner. HP is the world's largest IT company, providing infras ...

  10. Office 2010简体中文正式版完美终身破解版免费下载

    名称:Microsoft Office Professional 2010 正式版(JK破解免序列号安装版) Microsoft Office 2010 专业版 优点:用官方Microsoft off ...