编写一个通用方法,其功能是将数组扩展到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. network is unreachable 解决方案之一

    请按http://blog.csdn.net/oxiaoxio/article/details/41775183 一文中的设置方法设置:

  2. Thrift使用实例

    首先下载thrift.exe,和对应lib包.注意版本一定要一致. 否则编译会不识别出现错误. 可能会出现org.slf4j这个错误,那么你要把slf4j-api.jar下载下来引入到你的projec ...

  3. javascript高级知识分析——函数访问

    代码信息来自于http://ejohn.org/apps/learn/. 可以通过函数的名字在它的内部引用它. function yell(n){ return n > 0 ? yell(n-1 ...

  4. html系列教程--link mark meta

    <link> 标签:定义文档与外部资源的关系,常见的用途是链接样式表 demo: <link rel="stylesheet" type="text/c ...

  5. SessionState的配置 [转载]

    ASP.NET会话状态模块在Web.config文件中<System.web>标记下的<Sessionstate>标记的mode属性来决定该属性的四种可能的值: Off. In ...

  6. boost signal2 trackable

    挺简单的一个类,只是维护了一个成员 shared_ptr<detail::trackable_pointee> _tracked_ptr; 这样看来的话,所谓的track还是基于智能指针, ...

  7. Algorithms 4th - 1.1 Basic Programming Model - CREATIVE PROBLEMS

    欢迎交流 1.1.26 public class TestApp { public static void main(String[] args) { int a = StdIn.readInt(); ...

  8. 内存管理——Cocos2d-x学习历程(五)

    Cocos2d-x采用了引用计数与自动回收的内存管理机制. 1.每个对象包含一个用来控制生命周期的引用计数器,它就是CCObject的成员变量m_u- Reference.我们可以通过retainCo ...

  9. leetcode Reverse Nodes in k-Group python

    # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = ...

  10. rownum的使用-分页

    rownum的使用-分页 oracle分页显示方法 一.使用rownum分页显示方式 方式1:SELECT *  FROM (SELECT ROWNUM r, a.* FROM b$i_exch_in ...