数组的增加、删除、查找

    技术2025-01-08  18

    数组的增加、删除、查找 试题: 设置一个类, 命名为List, 类中包含属性:Object[] element; 方法有如下几个:

    增加方法add : 可以向数组属性中依次存储Object,数组内容存满时,需实现动态扩容。删除方法remove : 可以根据数据或下标,从数组属性中删除Object数据,删除后,数组后续元素需前移。查询方法get : 方法传入下标,返回数组中指定下标的数据。当前存储数据量size : 获取当前存储的有效数据量

    设置一个List类, 类中包含属性:Object[] element;

    public class List { final int MAX_SIZE = 5; Object[] element; //构造方法 public List() { } public List(Object[] element) { this.element = element; } //getter/setter方法 public Object[] getElement() { return element; } public void setElement(Object[] element) { this.element = element; }

    方法:获取当前存储的有效数据量

    public int size(Object[] element) { for(int i=0;i<element.length;i++) { if(element[i]==null) { return i; } } return element.length; }

    方法:可以向数组属性中依次存储Object,数组内容存满时,需实现动态扩容。无需真正增加原数组的容量,只用将原内容复制到新的大数组,然后让原数组名称重新等于大数组即可。由于原数组数据在堆中, 失去引用会被GC自动回收。

    public void add(String text,int s) { if(s==element.length) { Object[] newElement = new Object[element.length*2];//创建新大数组 for(int i=0;i<element.length;i++) { newElement[i] = element[i];//把原始数组复制到新大数组中 } newElement[element.length] = new String(text);//添加新的元素到大数组中 element = newElement;//将原始数组变为大数组 } else { element[s] = new String(text); } }

    方法: 可以根据下标,从数组属性中删除Object数据,删除后,数组后续元素需前移。

    public void remove(Object[] element,int index) { if(index==element.length-1) { element[index]=null;//如果要删除的下标是最后一位,直接赋值为null } else { for(int i=index;i<element.length-1;i++) { element[i] = element[i+1];//index后的数据元素往前移动,直接删除index数据 } if(element[element.length-1]!=null) { element[element.length-1] = null;//如果删除已满数组中的一个数据时,最后一位无法被null自动赋值,手动给它赋值null } } }

    查询方法:方法传入下标,返回数组中指定下标的数据。

    public Object get(Object[] element,int index) { while((index>=0)&&(index<element.length-1)) { System.out.println("数组中下标为"+index+"的数据是:"+element[index]); return element[index]; } return false; }

    完整代码:

    package pra15; public class List { final int MAX_SIZE = 5; Object[] element; //构造方法 public List() { } public List(Object[] element) { this.element = element; } //getter/setter方法 public Object[] getElement() { return element; } public void setElement(Object[] element) { this.element = element; } //4.当前存储数据量size public int size(Object[] element) { for(int i=0;i<element.length;i++) { if(element[i]==null) { return i; } } return element.length; } //3.查询方法get : 方法传入下标,返回数组中指定下标的数据。 public Object get(Object[] element,int index) { while((index>=0)&&(index<element.length-1)) { System.out.println("数组中下标为"+index+"的数据是:"+element[index]); return element[index]; } return false; } //2.删除方法remove : 可以根据数据或下标,从数组属性中删除Object数据,删除后,数组后续元素需前移。 public void remove(Object[] element,int index) { if(index==element.length-1) { element[index]=null;//如果要删除的下标是最后一位,直接赋值为null } else { for(int i=index;i<element.length-1;i++) { element[i] = element[i+1];//index后的数据元素往前移动,直接删除index数据 } if(element[element.length-1]!=null) { element[element.length-1] = null;//如果删除已满数组中的一个数据时,最后一位无法被null自动赋值,手动给它赋值null } } } //1.增加方法add : 可以向数组属性中依次存储Object,数组内容存满时,需实现动态扩容。 public void add(String text,int s) { if(s==element.length) { Object[] newElement = new Object[element.length*2];//创建新大数组 for(int i=0;i<element.length;i++) { newElement[i] = element[i];//把原始数组复制到新大数组中 } newElement[element.length] = new String(text);//添加新的元素到大数组中 element = newElement;//将原始数组变为大数组 } else { element[s] = new String(text); } } //打印数组元素 public void print() { System.out.println("数组如下:"); for(int i=0;i<element.length;i++) { System.out.println(element[i]); } } } package pra15; public class ListPractice { public static void main(String[] args) { List l = new List(); l.element = new Object[l.MAX_SIZE];//原数组长度为5 l.add("wait",l.size(l.element)); l.add("193",l.size(l.element)); l.add("+++",l.size(l.element)); l.add("year",l.size(l.element)); l.add("***",l.size(l.element)); //超过5个添加的元素 l.add("---",l.size(l.element)); l.add("@@@",l.size(l.element)); l.add("&&&",l.size(l.element)); l.add("^^^",l.size(l.element)); l.add("000",l.size(l.element)); l.add("%%%",l.size(l.element)); l.print();//打印数组元素 l.get(l.element, 3);//查询下标是3的元素 l.remove(l.element, 3);//删除下标是3的元素 l.print();//打印数组元素 } }
    Processed: 0.015, SQL: 9