用java制作自己的list

在平常使用数组的过程中,我们常常会觉得其功能有限,例如常常会超出下标限制,而且数据比较危险。为了解决这种情况,我们可以写一个自己的list类来存储数据。其基本功能应该包括自动管理下标 ,自动扩容 ,排序 ,合并, 增删查改 ,去重合并 等等。
具体代码如下。

import java.util.Arrays;
public class newList {// 属性 :int length;int size;// 个数: 从1开始计算  下标: 从0开始// 存储结构 所有类的父类为数据类型Object[] arrvalue;// 默认参数// 默认长度final int dflength=10;// 获取长度public int getLength() {return length;}// 返回 容器中元素个数public int getSize() {return size;}// 初始化public newList(){initList();}// 默认初始化private void initList(){length = dflength;arrvalue=new Object[length];size=0;}// 初始长度public newList(int initLength){if(initLength<=0){System.err.println("输入参数小于0,不在可取范围!");}if(initLength>=Integer.MAX_VALUE){System.out.println("输入参数大于上限,不在可取范围!");}if(initLength<=dflength){initList();}if(initLength>dflength){length = initLength;arrvalue=new Object[length];size=0;}}public void grow(){// 扩容 创建一个新的数组 ,比原数组容量更大int oldlength = length;int newlength = (oldlength>>1)+oldlength;length = newlength;Object[] newArrvalue = new Object[length];// 然后 将原数组中的所有数据 存入新数组中for (int i = 0; i < arrvalue.length; i++) {newArrvalue[i]=arrvalue[i];}// 引用替换arrvalue = newArrvalue;newArrvalue=null;// 垃圾变量回收System.out.println("扩容:"+getLength());System.out.println("元素个数:"+getSize());}// 添加元素public void add(Object value){//size 当前越界了if(size>=length){grow();}arrvalue[size++]=value;}// 根据值删除元素//根据下标删除元素public void delete(int index){Object[] newArr = new Object[arrvalue.length-1];for(int i=0, k =0;i<arrvalue.length;i++){if(i!=index){newArr[k]=arrvalue[i];k++;}}arrvalue = newArr;newArr = null;System.out.println(Arrays.toString(arrvalue));}//根据下标查找元素public void check(int index){if(index>length){System.out.println("index out of bound");}else if (index<0){System.out.println("index smaller than zero");}System.out.println(arrvalue[index]);}//根据元素查找下标public void check1(Object value){for(int i=0;i<arrvalue.length;i++){if(arrvalue[i].equals(value)){System.out.println(i);}}}//根据下标更改元素public void change(int index, Object value){if(index>length){System.out.println("index out of bound");}else if (index<0){System.out.println("index smaller than zero");}arrvalue[index] = value;System.out.println("changed: " + Arrays.toString(arrvalue));}public static void main(String[] args) {newList chessList = new newList();for (int i = 0; i < 15; i++) {chessList.add(i);}chessList.delete(3);chessList.check(2);chessList.change(2, 10);chessList.check1(10);}}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部