版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/L20902/article/details/88877690
线性表List
- 可以有重复元素。
- ArrayList 中数据存放的位置和我们添加数据的前后顺序一样。
- 如果需要通过下标随机访问元素,而不会在线性表起始位置插入或删除元素,那么ArrayList提供了最高效率的合集。如果需要在线性表的起始位置插入或删除元素,就应该选择LinkedList类。
- 除了包含用于访问和修改向量的同步方法之外,Vector类和ArrayList类是一样的。如果不需要同步,使用ArrayList比使用Vector效率更高。
- ArrayList ---- vs-------- LinkedList
ArrayList
1.插入/删除数据速度慢。因为要把插入点后所有对象移位。
2.顺序结构,可直接定位到某个位置的对象,定位速度快。
LinkedList
1.插入,删除数据快。只要断开插入点的连接,重新连接到别的块就OK。
2.链表结构,不可以直接定位到某个位置的对象,必须根据链表的方向一个一个找,定位速度慢。
集合set
- 集合(set)是一个用于存储和处理无重复元素的高效数据结构。
- 集合的三个具体类:HashSet、LinkedHashSet、TreeSet。
- 在测试一个元素是否在集合或者线性表中时,集合比线性表更加高效。
- HastSet 中数据存放的位置和添加顺序无关,和HashCode有关。
- HashSet: 无序
LinkedHashSet: 按照插入顺序
TreeSet: 从小到大排序
映射表Map
- 映射表(map)类似于目录,提供了使用键值快速查询和获取值得功能。不能有相同的键,每个键可以映射最多一个值。
- 可以使用三个具体的类来创建一个映射表:HashMap、LinkedHashMap和TreeMap。
- 对于定位一个值、插入一个条目以及删除一个条目而言,HashMap类是高效的。
- TreeMap 类在遍历排好顺序的键时是很高效的。
- HashMap中条目的顺序是随机的,没有顺序;
LinkedHashMap 支持映射表中的条目排序,条目可以按某种顺序(插入顺序、访问顺序)来获取
TreeMap中的条目是按键的升序排列的。 - HashMap 可以存放 null,不是线程安全的类
Hashtable
不能存放null,是线程安全的类