哈希表
- 哈希表在使用层面上可以理解为一种集合结构;
- 只有 Key,没有伴随数据 Value,可以使用 HashSet 结构;
- 既有 Key,又有伴随数据 Value,可以使用 HashMap 结构;
- 使用哈希表增(Put)、删(Remove)、改(Put)、查(Get)的操作,可以认为时间复杂度 O(1),但常数时间比较大;
- 放入哈希表的东西,如果是基础类型,内部按值传递,内存占用是这个东西的大小;
- 放入哈希表的东西,如果不是基础类型,内部按引用传递,内存占用是 8 字节;
有序表
- 有序表在使用层面上可以理解为一种集合结构:
- 只有 Key,没有伴随数据 Value,可以使用 TreeSet 结构;
- 既有 Key,又有伴随数据 Value,可以使用 TreeMap 结构;
- 有序表把 Key 按照顺序组织起来,而哈希表完全不组织;
- 红黑树、AVL 树、size-balance-tree 和跳表等属于有序表结构,只是底层具体实现不同;
- 放入如果是基础类型,内部按值传递,内春占用是这个东西的大小;
- 放入如果是不是基础类型,内部按引用传递,内存占用是 8 字节
- 有序表在使用时,比哈希表功能多,时问复杂度都是 O(logN)