课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > 使用泛型对java数组扩容
  • 使用泛型对java数组扩容

    发布:昆明Java培训      来源:博客园      时间:2016-09-28

  • 昆明Java培训机构的老师今天给大家讲使用泛型对java数组扩容

    编写一个通用方法,其功能是将数组扩展到10%+10个元素

    1 package cn.reflection;

    2

    3 import java.lang.reflect.Array;

    4

    5 public class ArrayGrowTest {

    6    public static void main(String[] args){

    7        ArrayGrowTest growTest=new ArrayGrowTest();

    8        int[] aInt={1,2,3,4};

    9        System.out.print("原数组:");

    10        growTest.printArray(aInt);

    11        aInt=(int[]) growTest.goodArrayGrow(aInt);

    12        System.out.print("扩容后数组:");

    13        growTest.printArray(aInt);

    14        

    15        String[] aStr={"hello","world","ni","hao","ma"};

    16        System.out.print("原数组:");

    17        growTest.printArray(aStr);

    18        aStr=(String[]) growTest.goodArrayGrow(aStr);

    19        System.out.print("扩容后数组:");

    20        growTest.printArray(aStr);

    21    }

    22    /**

    23     *数组扩容方法,支持不同数组类型

    24     * @param a 原数组

    25     * @return newArray新数组

    26     */

    27    public Object goodArrayGrow(Object a){

    28        Class cl=a.getClass();

    29        if(!cl.isArray()){

    30            return null;

    31        }

    32        Class componentType=cl.getComponentType();  //使用Class类的getComponentType方法确定数组对应的类型

    33        int length=Array.getLength(a);  //原长度

    34        int newLength=length*11/10+10;  //新长度

    35        Object newArray=Array.newInstance(componentType, ewLength); //实例化新数组

    36        //为新数组赋值,a代表原数组,第一个0代表原数组复制起始位置,newArray代表新数组,第二个0代表新数组放值起始位置,length代表从原数组中复制多长到新数组

    37        System.arraycopy(a, 0, newArray, 0, length); 

    38        return newArray;

    39    }

    40    /**

    41     *输出数组内容

    42     * @param a需要输出的数组

    43     */

    44    public void printArray(Object a){

    45        Class cl=a.getClass();

    46        if(!cl.isArray()){

    47            return ;

    48        }

    49        Class componentType=cl.getComponentType(); 

    50        int length=Array.getLength(a);

    51        System.out.print(componentType.getName()+"["+length+"]={");

    52        for(int i=0;i<length;i++){

    53            System.out.print(Array.get(a, i)+ " ");

    54        }

    55        System.out.println("}");

    56    }

    57

    58 }

    学Java开发就到昆明达内Java培训班!了解详情请登陆昆明达内Java培训官网(km.Java.tedu.cn)!

    推荐文章

上一篇:昆明java培训:java实现LIS算法

下一篇:java程序员:代理模式

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56