06-集合

nobility 发布于 2021-05-15 01-数据结构 2439 次阅读


集合

  • 集合是存储元素的容器,容器中没有重复元素
    • 有序集合:在集合中元素存储是有顺序的,比如基于二分搜索树的集合
    • 无序集合:在集合中元素存储是无顺序的,比如基于哈希表实现的集合
  • 由于集合的实现方式不仅是一种,所以写成接口的形式,方便多种实现
/**
 * @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 ();
  }
}
加油啊!即便没有转生到异世界,也要拿出真本事!!!\(`Δ’)/
最后更新于 2021-05-15