Java如何自定义集合
时间: 2023-06-14 19:05:11 浏览: 109
Java中可以通过实现 `java.util.Collection` 接口或者其子接口来自定义集合。下面以实现一个简单的队列为例,介绍自定义集合的实现步骤:
1. 创建一个类,实现 `java.util.Collection` 接口或者其子接口。在这个类中,需要实现接口中的所有方法,包括 `add()`、`remove()`、`contains()`、`isEmpty()`、`size()` 等方法。
2. 在实现 `add()` 和 `remove()` 方法时,需要注意队列的特性。队列是一个先进先出(FIFO)的数据结构,因此在添加元素时应该将元素添加到队列的尾部,在移除元素时应该从队列的头部开始移除。
3. 在实现 `iterator()` 方法时,需要返回一个实现了 `java.util.Iterator` 接口的迭代器。这个迭代器需要实现 `next()` 和 `hasNext()` 方法,用于迭代集合中的元素。
下面是一个简单的队列实现示例代码:
```java
import java.util.*;
public class MyQueue<E> implements Collection<E> {
private List<E> elements = new ArrayList<E>();
public boolean add(E e) {
return elements.add(e);
}
public boolean remove(Object o) {
return elements.remove(o);
}
public boolean contains(Object o) {
return elements.contains(o);
}
public boolean isEmpty() {
return elements.isEmpty();
}
public int size() {
return elements.size();
}
public Iterator<E> iterator() {
return elements.iterator();
}
public boolean addAll(Collection<? extends E> c) {
return elements.addAll(c);
}
public void clear() {
elements.clear();
}
public boolean containsAll(Collection<?> c) {
return elements.containsAll(c);
}
public boolean removeAll(Collection<?> c) {
return elements.removeAll(c);
}
public boolean retainAll(Collection<?> c) {
return elements.retainAll(c);
}
public Object[] toArray() {
return elements.toArray();
}
public <T> T[] toArray(T[] a) {
return elements.toArray(a);
}
}
```
这个队列类实现了 `java.util.Collection` 接口,可以使用 Java 中的集合操作来对其进行操作。使用该队列的示例代码如下:
```java
MyQueue<String> queue = new MyQueue<String>();
queue.add("apple");
queue.add("banana");
queue.add("orange");
System.out.println(queue.size()); // 输出3
for (String fruit : queue) {
System.out.println(fruit);
}
queue.remove("banana");
System.out.println(queue.contains("banana")); // 输出false
```
阅读全文