数组Array:
集合Set:
集合是承载元素的容器;
特点:每个元素只能存在一次
优点:去重
- 二分搜索树的添加操作add:不能盛放重复元素
- 是非常好的实现“集合”的底层数据结构
- /**
* 集合的接口
*/
public interface Set<E> {
void add(E e);//添加 <——<不能添加重复元素
void remove(E e);//移除
int getSize();//获取大小
boolean isEmpty();//是否为空
boolean contains(E e);//是否包含元素
} - 典型应用:1.客户统计 2.词汇量统计
集合的时间复杂度分析:
linkedList | BST | |
add | O(n) | O(logn) |
contains | O(n) | O(logn) |
remove | O(n) | O(logn) |
有序集合和无序集合
有序集合:元素中具有顺序性<——<基于搜索树实现
无序集合:上一节链表实现的集合是无序的集合,元素没有顺序性<——<基于哈希表的实现
多重集合
- 集合中的元素可以重复
映射Map(字典)
- 一一映射,在定义域中每一个值在值域都有一个值与他对应
- 存储(键,值)数据对的数据结构(Key,Value)
- 根据键(Key),寻找值(Value)
有序映射和无序映射
有序映射中键具有顺序性的<——<基于搜索树实现
无序映射中键没有顺序性的 <——<基于哈希表实现
多重映射:键可以重复的
基于集合(Set<E>)的实现来实现映射(Map<K,V>)
重定义集合中的元素是<K,V>
重定义的数据对是以K键来进行比较的,而不去管value值
基于映射(Map<K,V>)实现来实现集合(Set<E>)更常见的方法
当我们有一个底层映射实现了
集合我们就可以理解成Map<K,V>中的V值为null的情况
对不管是什么K,它所对应的V都是空
当我们只考虑K的时候,整个Map,就是V的集合