package ch01;
/**
* 练习1.13 设计一个泛型类Collection,它存储Object对象的集合(在数组中),以及该集合的大小。提供public方法
* isEmpty, makeEmpty, insert, remove和isPresent。方法isPresent(x)当且仅当在该集合中存在(由equals定义)
* 等于x的一个Object时返回true。
*
*/
class Collection<T> {
private final static int DEFAULT_CAPACITY = 10;
private Object[] items;
private int size;
public Collection() {
size = 0;
ensureCapacity(DEFAULT_CAPACITY);
}
public boolean isEmpty() {
return size == 0;
}
public void makeEmpty() {
if (size == 0) {
return;
}
for (int i = 0; i < size; ++i) {
items[i] = null;
}
size = 0;
}
public boolean insert(T x) {
insert(size(), x);
return true;
}
public void insert(int idx, T x) {
if (items.length == size())
ensureCapacity(size() * 2 + 1);
for (int i = size; i > idx; i--)
items[i] = items[i - 1];
items[idx] = x;
size++;
}
public T remove(int idx) {
T removedItem = (T)items[idx];
for (int i = idx; i < size() - 1; ++i)
items[i] = items[i+1];
items[size() - 1] = null;
size--;
return removedItem;
}
public T remove(T x) {
for (int i = 0; i < size(); ++i) {
if (items[i].equals(x)) {
return remove(i);
}
}
return null;
}
public boolean isPresent(T x) {
for (int i = 0; i < size(); ++i) {
if (items[i].equals(x)) {
return true;
}
}
return false;
}
private void ensureCapacity(int newCapacity) {
if (newCapacity < size)
return;
Object[] old = items;
items = new Object[newCapacity];
for (int i = 0; i < size(); ++i)
items[i] = old[i];
}
public int size() {
return size;
}
public void display() {
for (int i = 0; i < size(); ++i) {
System.out.print(items[i] +" ");
}
//System.out.println();
}
}
public class EX13 {
public static void main(String[] args) {
Collection<String> strColl = new Collection<String>();
System.out.println("isEmpty: " + strColl.isEmpty());
strColl.insert("a");strColl.insert("c");strColl.insert("e");
System.out.print("After insert:" );strColl.display();
System.out.println();
strColl.remove("c");
System.out.print("After remove c:"); strColl.display();
System.out.println();
System.out.println("if exist f: " + strColl.isPresent("f"));
System.out.println("if exist e: " + strColl.isPresent("e"));
strColl.makeEmpty();
System.out.print("After make empty:");strColl.display();
System.out.println();
}
}
数据结构与算法分析Java版练习1.13
最新推荐文章于 2024-07-01 02:25:02 发布
本文档展示了如何使用Java设计一个泛型类Collection,该类实现了存储Object对象的集合,并提供了isEmpty、makeEmpty、insert、remove和isPresent等方法。类的实现包括数组存储、容量调整和基本操作的细节。
摘要由CSDN通过智能技术生成