集合
- 集合是存储元素的容器,容器中没有重复元素
- 有序集合:在集合中元素存储是有顺序的,比如基于二分搜索树的集合
- 无序集合:在集合中元素存储是无顺序的,比如基于哈希表实现的集合
- 由于集合的实现方式不仅是一种,所以写成接口的形式,方便多种实现
/**
* @InterfaceName: Set
* @Description: 自定义集合接口
*/
public interface Set<E> {
/**
* @MethodName: add
* @Description: 向集合中添加元素
* @Param element: 要添加的元素
* @Return void
*/
void add(E element);
/**
* @MethodName: remove
* @Description: 删除集合元素
* @Param element: 要删除的元素
* @Return void
*/
void remove(E element);
/**
* @MethodName: contains
* @Description: 判断集合中是否包含该元素
* @Param element: 要查询的元素
* @Return boolean
*/
boolean contains(E element);
/**
* @MethodName: getSize
* @Description: 返回该集合中的元素个数
* @Return int
*/
int getSize();
/**
* @MethodName: isEmpty
* @Description: 判断该集合是否为空
* @Return boolean
*/
boolean isEmpty();
}
基于二分搜索树实现的集合
/**
* @ClassName: TreeSet
* @Description: 基于二分搜索树实现的自定义集合
*/
public class TreeSet<E extends Comparable<E>> implements Set<E> {
private BST<E> bst;
public TreeSet() {
this.bst = new BST<>();
}
/**
* @MethodName: add
* @Description: 向集合中添加元素操作实现
* @Param element: 要添加的元素
* @Return void
*/
@Override
public void add(E element) {
this.bst.add(element);
}
/**
* @MethodName: remove
* @Description: 从集合中删除元素操作实现
* @Param element: 要删除的元素
* @Return void
*/
@Override
public void remove(E element) {
this.bst.remove(element);
}
/**
* @MethodName: contains
* @Description: 判断集合中是否包含该元素操作实现
* @Param element: 要查询的元素
* @Return boolean
*/
@Override
public boolean contains(E element) {
return this.bst.contains(element);
}
/**
* @MethodName: getSize
* @Description: 返回该集合中的元素个数操作实现
* @Return int
*/
@Override
public int getSize() {
return this.bst.getSize();
}
/**
* @MethodName: isEmpty
* @Description: 判断该集合是否为空操作实现
* @Return boolean
*/
@Override
public boolean isEmpty() {
return this.bst.isEmpty();
}
}
基于链表实现的集合
/**
* @ClassName: LinkedListSet
* @Description: 基于链表实现的自定义集合
*/
public class LinkedListSet<E> implements Set<E> {
private LinkedList<E> list;
public LinkedListSet() {
this.list = new LinkedList<>();
}
/**
* @MethodName: add
* @Description: 向集合中添加元素操作实现
* @Param element: 要添加的元素
* @Return void
*/
@Override
public void add(E element) {
if (!this.list.contains(element)) {
this.list.add(0, element);
}
}
/**
* @MethodName: remove
* @Description: 从集合中删除元素操作实现
* @Param element: 要删除的元素
* @Return void
*/
@Override
public void remove(E element) {
this.list.removeElement(element);
}
/**
* @MethodName: contains
* @Description: 判断集合中是否包含该元素操作实现
* @Param element: 要查询的元素
* @Return boolean
*/
@Override
public boolean contains(E element) {
return this.list.contains(element);
}
/**
* @MethodName: getSize
* @Description: 返回该集合中的元素个数操作实现
* @Return int
*/
@Override
public int getSize() {
return this.list.getSize();
}
/**
* @MethodName: isEmpty
* @Description: 判断该集合是否为空操作实现
* @Return boolean
*/
@Override
public boolean isEmpty() {
return this.list.isEmpty();
}
}
Comments NOTHING