集合(Set)
也叫做字典,键值对的匹配,两个元素的集之间元素相互“对应”的关系。
- 可以利用 Map 储存键,值只储存 null 实现。
常用映射
- HashMap
- 底层使用哈希表
 
- ListMap
- 底层使用链表
 
- TreeMap
- 底层使用树形结构
 
核心代码
export interface Set<T> {
  size: number;
  empty: boolean;
  clear: () => void;
  contains: (val: T) => boolean;
  add: (val: T) => void;
  remove: (val: T) => void;
}
核心代码
import { TreeMap } from './treeMap';
import { Set } from './set';
export class TreeSet<T> implements Set<T> {
  private map = new TreeMap<T, null>((t1, t2) => this.compare(t1, t2));
  get size() {
    return this.map.size;
  }
  get empty() {
    return this.size === 0;
  }
  constructor(private compare: (t1: T, t2: T) => number) {}
  clear() {
    this.map.clear();
  }
  contains(val: T) {
    return this.map.contains(val);
  }
  add(val: T) {
    this.map.set(val, null);
  }
  remove(val: T) {
    this.map.remove(val);
  }
}
核心代码
import { HashMap } from './hashMap';
import { Set } from './set';
export class HashSet<T> implements Set<T> {
  private map = new HashMap<T, null>((t1, t2) => this.compare(t1, t2));
  get size() {
    return this.map.size;
  }
  get empty() {
    return this.size === 0;
  }
  constructor(private compare: (t1: T, t2: T) => number) {}
  clear() {
    this.map.clear();
  }
  contains(val: T) {
    return this.map.contains(val);
  }
  add(val: T) {
    this.map.set(val, null);
  }
  remove(val: T) {
    this.map.remove(val);
  }
}