java1)编写基于数组的线性表MyArrayList.java,它必须实现IMyList接口。 2)编写测试代码,验证程序正确性。
时间: 2024-10-20 15:09:34 浏览: 0
1) 编写一个基于数组的线性表 `MyArrayList.java`,实现 `IMyList` 接口,如下:
```java
import java.util.ArrayList;
import java.util.List;
public class MyArrayList<T> implements IMyList<T> {
private List<T> elements;
public MyArrayList(int initialCapacity) {
elements = new ArrayList<>(initialCapacity);
}
// 实现 IMyList 接口的方法
@Override
public void insert(int index, T element) {
if (index < 0 || index > elements.size()) {
throw new IndexOutOfBoundsException();
}
elements.add(index, element);
}
@Override
public T delete(int index) {
if (index < 0 || index >= elements.size()) {
throw new IndexOutOfBoundsException();
}
return elements.remove(index);
}
@Override
public T search(T value) {
for (int i = 0; i < elements.size(); i++) {
if (elements.get(i).equals(value)) {
return elements.get(i);
}
}
return null; // 如果未找到,返回null
}
@Override
public T get(int index) {
if (index < 0 || index >= elements.size()) {
throw new IndexOutOfBoundsException();
}
return elements.get(index);
}
@Override
public void set(int index, T element) {
if (index < 0 || index >= elements.size()) {
throw new IndexOutOfBoundsException();
}
elements.set(index, element);
}
@Override
public int size() {
return elements.size();
}
@Override
public boolean isEmpty() {
return elements.isEmpty();
}
@Override
public void clear() {
elements.clear();
}
@Override
public void traverse(Consumer<T> action) {
elements.forEach(action);
}
}
```
2) 编写测试代码 `MyArrayListTest.java` 来验证程序正确性:
```java
import org.junit.Test;
import static org.junit.Assert.*;
public class MyArrayListTest {
@Test
public void testMyArrayList() {
MyArrayList<String> list = new MyArrayList<>(5);
// 插入、删除、查找元素
list.insert(0, "A");
list.insert(1, "B");
list.set(0, "X");
assertEquals("X", list.get(0));
assertEquals("B", list.search("B"));
// 验证大小、空状态和遍历
assertEquals(2, list.size());
assertTrue(list.isEmpty() == false);
list.traverse(System.out::println); // 输出 "X" 和 "B"
// 清空和验证结果
list.clear();
assertTrue(list.isEmpty());
}
}
```
这个测试会创建一个 `MyArrayList` 实例,添加一些元素并进行常见的操作,然后验证每个方法的预期行为。
阅读全文