JAVA设计一个可变长的数组类,这个类底层采用数组来实现,对外提供添加对象、删除对象、查询对象、修改对象、以及 查询元素个数、清空等操作。 为了将来有良好的扩展性,我们可以事先定义一个接口,把这些功能定义好,由子类负责去实现,接口的定义如下: 任务要求: 请写一个类来实现这个接口, 申明如下: 测试要求: 请写一个调用者类,来验证所有的方法。申明如下: public interface VarArray { //定义对外的操作 //添加一个元素[整数]到可变长数组对象中,成功返回true,失败返回false boolean add(int data); boolean remove(int data); //从可变长数组中查询元素data, 如果找到,则返回下标,否则,返回-1【如果有多个data,则只返回第1次出现 的】 int find(int data); int find(int data, int start, int end); boolean update(int oldData, int newData); //求有效元素的个数 int size(); //清空整个可为长数组 void clear(); //输出当前可变长数组中的元素 void printData(); } public class VarArrayImpl implements VarArray { //属性1:为了实现数据的存储,我们需要一个整型数组,如下: private int[] container; //属性2:为了记录数组中的有效元素个数,我们需要添加一个整型的属性,如下: private int count; //注:以上2个属性是必备的,其它的辅助属性可以根据自己的需要来添加 ... //重写所有的抽象方法 } public class UseVarArray { // public static void main(String[] args) { //TODO 请自行实现 }
时间: 2024-02-06 16:01:57 浏览: 115
以下是VarArrayImpl类的实现,实现了VarArray接口中的所有方法:
```java
public class VarArrayImpl implements VarArray {
private int[] container; // 存储数据的数组
private int count; // 记录有效元素个数
public VarArrayImpl() {
container = new int[10]; // 初始容量为10
count = 0;
}
@Override
public boolean add(int data) {
// 如果数组已满,需要扩容
if (count == container.length) {
int[] newContainer = new int[container.length * 2]; // 扩容为原来的2倍
System.arraycopy(container, 0, newContainer, 0, container.length);
container = newContainer;
}
container[count++] = data;
return true;
}
@Override
public boolean remove(int data) {
int index = find(data);
if (index == -1) {
return false; // 数组中没有该元素
}
// 将后面的元素向前移动一个位置
for (int i = index + 1; i < count; i++) {
container[i - 1] = container[i];
}
count--;
return true;
}
@Override
public int find(int data) {
return find(data, 0, count - 1);
}
@Override
public int find(int data, int start, int end) {
for (int i = start; i <= end; i++) {
if (container[i] == data) {
return i;
}
}
return -1;
}
@Override
public boolean update(int oldData, int newData) {
int index = find(oldData);
if (index == -1) {
return false; // 数组中没有该元素
}
container[index] = newData;
return true;
}
@Override
public int size() {
return count;
}
@Override
public void clear() {
count = 0;
}
@Override
public void printData() {
System.out.print("[");
for (int i = 0; i < count; i++) {
System.out.print(container[i]);
if (i != count - 1) {
System.out.print(", ");
}
}
System.out.println("]");
}
}
```
下面是UseVarArray类的实现,测试了VarArrayImpl类中的所有方法:
```java
public class UseVarArray {
public static void main(String[] args) {
VarArray varArray = new VarArrayImpl();
// 添加元素
varArray.add(10);
varArray.add(20);
varArray.add(30);
varArray.add(40);
varArray.printData(); // [10, 20, 30, 40]
// 删除元素
varArray.remove(20);
varArray.printData(); // [10, 30, 40]
// 查找元素
int index = varArray.find(30);
System.out.println(index); // 1
// 修改元素
varArray.update(30, 50);
varArray.printData(); // [10, 50, 40]
// 查询元素个数
int size = varArray.size();
System.out.println(size); // 3
// 清空数组
varArray.clear();
varArray.printData(); // []
// 添加更多元素
for (int i = 0; i < 20; i++) {
varArray.add(i);
}
varArray.printData(); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
}
}
```
阅读全文