集合框架分为两大派系
|--单列集合 Coloection 接口
|--List 接口 有序的,可重复,可根据角标操作元素
|--ArrayList 底层数据结构是数组,查询速度快,增删稍慢,线程不同步的,
|--LinkedList 底层数据结构是链表,增删速度快,查询稍慢,线程不同步的
|--Vector 底层数据结构是数组,增删查都稍慢,线程同步的,jdk1.0出现的,那时候还没有集合框架,后来被ArrayList取代
|--Set 接口 无序的,不可重复,因为底层是一个Map集合,只使用了Map的key,要保证键的唯一性
|--HashSet 底层数据结构是哈希表,线程不同步的,无序,高效,必须保证元素的唯一性,是通过调用hashCode和equals方法来判断元素是否相同的
|--TreeSet 底层数据结构是二叉树,线程不同步的,特点就是可以对集合中的元素进行排序,前提是要指定排序规则,有两种方式
1,让元素自身具备比较性,如果元素自身不具备比较性,可以让元素实现Comparable接口,并覆盖compareTo方法来指定比较规则
2,如果元素具备的比较性并不是我们所需要的,可以自己定义一个比较器,实现Comparator接口,并覆盖compare方法来指定比较规则,通过构造函数传递给集合即可
|--要迭代以上集合都是通过迭代器来完成的,通过调用iterator方法来返回一个迭代器Iterator(接口);通过这个迭代器来迭代元素
|--双列集合 Map
|--Hashtable 底层是哈希表结构,线程同步的,不可以存储null键null值,jdk1.0出现,后来被HashMap所替代,
|--HashMap 底层的数据结构是哈希表,线程不同步的,可以存储null键null值,
|--TreeMap 底层是二叉树数据结构,线程不同步,特点是可以对键进行排序,排序方式同TreeSet相同,
|-- Map 集合和Collection的不同点是,Map集合一次是存一对元素,键值对形式(键和值存在着眏射关系),而Collection一次只存一个元素
|-- Map 集合自身并没有迭代方法,但是可以通过keySet和entrySet方法来讲Map集合转换成Set集合在进行迭代,
keySet返回的是集合中所有的键,在通过Map集合中的get(key)来获取对应的值,而entrySet方法返回的是Map.Entry这种数据类型,里面保存的是所有键值对的映射关系
list和set是实现了Collection接口的,而map不是的,他和collection属平级的 |