定义接口
定义集合的接口Set.java,使它支持泛型。
public interface Set<E> {
void add(E e); // 添加元素 不能添加重复元素
void remove(E e); // 删除元素
boolean contains(E e); // 查看集合是否包含某个元素
int getSize(); // 获得集合元素个数
boolean isEmpty(); // 判断集合是否为空
}
实现集合类
调用链表类LinkedList.java,是我的另一篇学习笔记《实现一个属于自己的链表类》中使用递归底层实现的类,完整的链表类在第七节。
基于链表实现的集合类LinkedListSet.java,实现接口时只调用了链表的5个方法,分别是在链表头添加元素,删除链表中的元素,链表大小,是否为空和是否包含某一元素,需要注意的是链表类可以添加重复的元素,在往集合中添加元素时,需要进行if条件处理,确保不能添加重复的元素
。
LinkedListSet.java
public class LinkedListSet<E> implements Set<E> {
private LinkedList<E> list;
public LinkedListSet() {
list = new LinkedList<>();
}
@Override
public int getSize(){
return list.getSize();
}
@Override
public boolean isEmpty(){
return list.isEmpty();
}
@Override
public boolean contains(E e){
return list.contains(e);
}
@Override
public void add(E e){
// 集合没有重复元素,不包含时添加
if(!list.contains(e))
list.addFirst(e);
}
@Override
public void remove(E e){
list.removeElement(e);
}
}