开发动态数组
来源:互联网 发布:mac yosemite 编辑:程序博客网 时间:2024/05/21 01:47
在编写Java程序时,数组是常用的一种数据类型,然而在实际使用时有许多不便之处。为此,文章讨论了代替Java传统数组的动态数组的设计及实现过程,并举例说明了动态数组类的使用方法。
关键词:Java;动态数组;类;方法
O引言
熟悉Java编程的人员都知道,在创建Java数组时,必须用表达式指定其大小(如:int a[]=new int[3])或通过初始化(如:int a[]={1,2,31)隐式指定其大小,数组对象一旦创建,长度就不可改变。在实际使用这种数组时会有一些问题,如编译器不检查数组下标是否越界,在程序运行过程中不能改变数组的大小,不能进行数组拷贝、赋值等操作,给编程和调试带来了诸多的不便。为此,作者利用Java自身的特点构造了一个可动态创建、操作较为齐全的动态数组类,以解决Java传统数组的不足。
1构造一个动态数组类
1.1定义一个动态数组类DynamicArray
public class DynamicArray,/以下代码在JDKl.4.2下调试通过
(pnvate Object elems口:
private Int length:
pubIic DynamicArray(){elems=null:Iength=O:}
pubJjc jnt getLength()
{if(elems==null)return 0:
else return length:
}
}
在DynamicArray类中,用elcms数组来存储Object类型的对象元素,由于Java中object是其他所有类的超类,所以可以通过0bject类型的引用来指向子类的对象。字段lengm用来得到当前elcms中存储元素的个数。无参数构造方法将elems初始化为null。
1、2在DynamicArray类中增加添加、删除、获取数组元素的方法
1.2.1添加数组元素的方法
pubIjc void appendEIem(Object elem)
{if(eIems==null){elems=new O bject[1];ems[O]=elem:)
//若数组为空则新创建一个数组
else//否则建立一个新数组比原数组长1,将原数组元素拷贝到
新数组并增加新元素
{Object temp~=new Object[length+1];
for(int i=0;i tem p[length]=eIem;
elems=temp;
}
Iength++:
}
1.2.2插入数组元素的方法
public void insertElem(O bject elem)
{if(elems==null)(elems=new Object[1];elems[0]=elem:}
//若数组为空则新创建一个数组
else//否则建立一个新数组比原数组长1,增加新元素并将原数
组元素拷贝到新数组
{Object tempN=new O bject[Iength+1]:
ternp[0]=elem;
for(int i=1;i elems=temp;
}
length++:
}
1.2.3删除指定下标元素的方法
pubIic boolean delElem(int index)
{if(elems==null)return false;//如果没有数组元素
if(index>=O&&index1)
//如果下标没有越界
{Object temp=new O bject[Iength-1]:
for(int i=0:i for(int i=index+1;i elems=temp;length--;
return true;
}
if(index==O&&length==1){elems=null;length--;return true;)
return flaIse:
}
1.2.4读取指定下标元素的方法
public Object getElem(Int index)
{if(elems==null)return null;
else
if(index>=O&&index else return nuIl:
}
1.2.5清空数组的方法
public void clearAII()
(elems=null;length=0:)
2使用动态数组类
(1)创建一个动态数组
DynamicArray aArray:=new DynamicArray():
(2)添加一个元素
aArray.append~em(new Integer(4)):
(3)插入一个元素
aArray.insertElem(new Double(10.4)):
(4)取得一个数组元素
Integer i=(Integer)aArray.getElem(1):
需要注意的是,在取得某一数组元素时,应当根据其类型进行强制类型转换。
(5)删除指定的元素
boolean bl=aArray.delElem(0);
(6)清空数组
aArray.clearAIl()://清空后可以继续增加新元素
3结束语
根据需求,还可以为动态数组类DynamicArray添加其它有意义的方法,如数组的排序、求最大数、求最小数等,那么,它将变成一个功能强大、使用灵活、方便于各种应用的数组类了。
在c#和Java中系统本身提供了一些列表类,其设计原理与本文思路相同,充分理解本文动态数组的原理对于提高Java类库的认知具有重要意义。
笔者在多年从事Java教学和软件开发工作中,深感Java普通数组的不足,从而开发了动态数组类DynamicArray,希望能给Java编程人员一些启示。本文设计的动态数组已经在财务管理系统、阅卷系统等多个应用系统中使用,使用效果较好。
- 开发动态数组
- Android开发动态二维数组赋值
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- Java 7已经完成的七大新功能预览
- 上网的好处
- C++随机函数
- Start-up of Dual System Windows and Linux
- 在eclipse中设置server.xml与context.xml分离
- 开发动态数组
- 学习SQL语句之SQL语句大全
- jstl的tld配置
- thttpd 笔记
- iframe里面的页面调用父窗口,左右窗口js函数的方法
- ExtJS近期技术总结
- 程序员
- 搜索引擎服务于生活
- jquery 实现对select操作的日期联动