sunfruit[请访问http://www.fruitres.cn]

--我相信JAVA能走得更远 QQ:316228067

[原创]用JAVA写的整形动态数组

    --sunfruit

    用java实现了整形数字的动态数组


JDK版本
        1.3.1
    功能
        实现了添加整数到动态数组中,JDK(1.5以下)不提供整形类型的集合,比如ArrayList这样的集合不允许添加整数,
        但是在编程过程中会遇到需要整形的动态数组的情况,所以这个类实现了这样的功能
       
    欢迎大家提意见,交流
   
    代码如下:
/**
 * Title: 整形动态数组
 * Description: 实现了整形数字的动态添加
 * Copyright: Copyright (c) 2003
 * Company: LingTu
 * @author cuijiang
 * @version 2.0
 */
public class DynArrayInt {
 /**
  * 原始数组
  */
 private int[] data_All;

 /**
  * 计数器(数组长度)
  */
 private int size_count;

 /**
  * 构造器,初始长度默认为10
  */
 public DynArrayInt() {
  this(10);
 }

 /**
  * 构造器,设置数组的初始长度
  *
  * @param iniSize  int 数组的初始长度
  */
 public DynArrayInt(int iniSize) {
  data_All = new int[iniSize];
 }

 /**
  * 添加数据,调用checkAdd(int i)
  * @param i   int 一个整形数字
  */
 public void addInt(int i) {
  //判断是否增长
  this.checkAdd(size_count + 1);
  //赋值
  data_All[size_count++] = i;
  //添加时数组长度加一
 }

 /**
  * 添加数字,判断是否增长
  * @param i   int 一个整形数字
  */
 private void checkAdd(int i) {
  //获得原来的大小
  int star = data_All.length;
  //判断是否增长
  if (i > star) {
   int starData[] = data_All;
   //设定增长大小
   int endall = star * 2;
   data_All = new int[endall];
   System.arraycopy(starData, 0, data_All, 0, size_count);
  }
 }

 /**
  * 获取数据
  * @param i    int 索引号
  * @return int
  */
 public int getInt(int i) {

  if (i < 0 || i >= size_count) {
   throw new IndexOutOfBoundsException("超出最大或最小索引值,无法取得数据");
  } else {
   return data_All[i];
  }
 }

 /**
  * 获取数据转换成字符串模式
  * @param i  int 索引号
  * @return String
  */
 public String getIntToString(int i) {

  if (i < 0 || i >= size_count) {
   throw new IndexOutOfBoundsException("超出最大或最小索引值,无法取得数据");
  } else {
   return String.valueOf(data_All[i]);
  }
 }

 /**
  * 删除数据
  * @param j int 一个要删除的整数        
  */
 public void remove(int j) {
  for (int i = 0; i < size_count; i++) {
   if (data_All[i] == j) {
    System.arraycopy(data_All, i+1, data_All, i, size_count-i-1); // 复制数据
    --size_count;
    return;
   }
  }
 }

 /**
  * 删除数据
  * @param j int 一个要删除的索引        
  */
 public void removeIndex(int j) {
  if (j < 0 || j >= size_count) {
   throw new IndexOutOfBoundsException("超出最大或最小索引值,无法删除数据");
  } else {
   System.arraycopy(data_All, j + 1, data_All, j, size_count -j- 1); // 复制数据
   --size_count;
   return;
  }
 }

 /**
  * 获取大小
  * @return int 获得数组长度
  */
 public int getSize() {
  return size_count;
 }

 /**
  * 获取数组对象
  * @return int[] 获得数组对象
  */
 public int[] getAllInt() {
  int[] starData = new int[size_count];
  System.arraycopy(data_All, 0, starData, 0, size_count);
  return starData;
 }

 /**
  * 获得数组对象,String格式
  * @return String[] 获得数组的对象
  */
 public String[] getAllIntToString() {
  int[] tempint = getAllInt();
  String[] starData = new String[tempint.length];
  for (int i = 0; i < starData.length; i++) {
   starData[i] = String.valueOf(tempint[i]);
  }
  return starData;
 }

 /**
  * 删除全部内容
  */
 public void removeAll() {
  data_All = new int[10];
  size_count = 0;
 }
}

posted on 2006-02-19 17:33 sunfruit 阅读(1401) 评论(0)  编辑  收藏 所属分类: JAVA SE & EE


只有注册用户登录后才能发表评论。


网站导航: