06-集合

nobility 发布于 2020-04-14 1700 次阅读


集合

  • 集合是存储元素的容器,容器中没有重复元素
    • 有序集合:在集合中元素存储是有顺序的,比如基于二分搜索树的集合
    • 无序集合:在集合中元素存储是无顺序的,比如基于哈希表实现的集合
  • 由于集合的实现方式不仅是一种,所以写成接口的形式,方便多种实现
/**
 * @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();
  }
}
此作者没有提供个人介绍
最后更新于 2020-04-14