使用泛型对java数组扩容
编写一个通用方法,其功能是将数组扩展到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数组扩容的更多相关文章
- [转载]Java数组扩容算法及Java对它的应用
原文链接:http://www.cnblogs.com/gw811/archive/2012/10/07/2714252.html Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组 ...
- Java数组扩容算法及Java对它的应用
1)Java数组对象的大小是固定不变的,数组对象是不可扩容的.利用数组复制方法可以变通的实现数组扩容.System.arraycopy()可以复制数组.Arrays.copyOf()可以简便的创建数组 ...
- java数组扩容
有些时候使用数组代替栈,玩意数组容量不够需要扩容 则: 1.Array.toString();直接遍历打印数组 2.数组扩容采用Array.copyOf(),直接实现数组扩容功能,非常强大 (实际 ...
- Java 数组扩容
在添加数据到达数组的上限的时候数组进行扩容: public void resizeArrayCaptcity(){ if(size>=arr.length){ Emp [] arr2=new ...
- [改善Java代码]不能初始化泛型参数和数组
泛型类型在编译期被擦除,我们在类初始化时将无法获得泛型的具体参数,比如这样的代码: class Foo<T>{ //private T t =new T();//报错Cannot inst ...
- -Java-Runoob-高级教程-实例-数组:09. Java 实例 – 数组扩容
ylbtech-Java-Runoob-高级教程-实例-数组:09. Java 实例 – 数组扩容 1.返回顶部 1. Java 实例 - 数组扩容 Java 实例 以下实例演示了如何在数组初始化后 ...
- Java - 数组解析
java提高篇(十八)-----数组之一:认识JAVA数组 一.什么是数组 数组?什么是数组?在我印象中的数组是应该这样的:通过new关键字创建并组装他们,通过使用整形索引值访问它的元素,并且它的尺寸 ...
- 藏在Java数组的背后,你可能忽略的知识点
目录 引言 概念 区别于C/C++数组 区别于容器 数组特性 随机访问 Java数组与内存 解惑 数组的本质 Java中的数组是对象吗? Java中数组的类型 Java中数组的继承关系 参考资料 引言 ...
- java数组知识总结(一)//按类
在线api 目录: 零/数组(基本元素) 1. 声明一个数组 2. 创建一个数组 3. 数组名.length 4. 数组的引用 一/java.lang.reflect.Array / ...
随机推荐
- SQL Server:SQL Like 通配符特殊用法:Escape 【转】
SQL中escape的主要用途 1.使用 ESCAPE 关键字定义转义符.在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符.例如,要搜索在任意位置包含字符串 5% 的字符串 ...
- js实现弹出窗口、页面变成灰色并不可操作的例子
function show() //显示隐藏层和弹出层 { var hideobj=document.getElementById("hidebg"); hidebg.style. ...
- CentOS添加中科大、163 yum源
首先备份CentOS-Base.repo [root@richard yum.repos.d]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos ...
- Xcode升级7.3 自动补全不提示导入的自定义类解决方案
见图:
- CSS中链接文本为图片时的问题(塌陷、对应的图片建立倒角的问题)
我在做Javascript DOM编程艺术的时候,在12章自己做练习时遇到了一个问题,<a>的内容<img>从<a>的盒子中溢出.代码如下: <a href= ...
- 经典:十步完全理解 SQL
经典:十步完全理解 SQL 来源:伯乐在线 链接:http://blog.jobbole.com/55086/ 很多程序员视 SQL 为洪水猛兽.SQL 是一种为数不多的声明性语言,它的运行方式完 ...
- EC读书笔记系列之9:条款16、17
条款16 成对使用new和delete时要采取相同形式 记住: ★若你在new表达式中使用[ ],必须在相应的delete中也使用[ ],反之亦然 -------------------------- ...
- Programming C#.Inheritance and Polymorphism
继承 C#中,创建派生类要在派生类的名字后面加上冒号,后面再跟上基类的名字: public class ListBox : Control 提示:C++程序员注意了,C#没有私有或者保护继承 多态 继 ...
- JQuery easyui (4)Tooltip (提示组件) 组件
ps:先来一波美图 Tooltip的加载方式: 1,class加载 <a href="#" title="tooltip">hello word&l ...
- Facebook 调试工具Stetho配置入门
I decided to spend a few hours on Stetho.Stetho is a sophisticated debug bridge for Android applicat ...