集合与数组的区别:
数组一旦声明,其数据类型和长度不可变,集合的数据类型可以混和,长度不限定。
集合的结构图:
Collection - Map
---------------------------------------------------------------------------
List - HashMap
ArrayList - LinkedHashMap
LinkedList - TreeMap
LinkedList -
----------------------------------------------------------------------------
Set -
HashSet -
LinkedHashSet -
TreeSet -
----------------------------------------------------------------------------
List和Set分别实现了Collection接口,而Map和Collection“平级”。
List:元素存储特点不唯一、无序。
遍历方式:
1、for循环
2、for-each
3、迭代器
ArrayList:
相当于可变长度的数组,在内存中的存空间是连续的
优点:查询、遍历效率高
缺点:添加、删除效率低
Vector:
类似于ArrayL。
区别:
ArrayList是非线程安全的,效率较高
Vector是线程安全的,效率较低
LinkedList:
采用链表结构进行存储
优点:添加、删除效率高
缺点:查询、遍历效率低
Set:元素存储特点唯一、无序
1、for-each
2、迭代器
HashSet:
采用哈希表方式进行存储
优点:增加、删除、查询效率高
在添加元素时调用hashCode()方法,计算哈希值,如果哈希值相等,则继续调用equals()方法进行比较,如果返回值为true,则两个元素相同,反之不同。即 equals()为true,则哈希值一定相等。反之则不成立。
缺点:无序
LinkedHashSet:
采用链表结构+哈希表存储方式
有序(添加顺序)
TreeSet:
采用二叉树(红黑树)方式进行存储
有序(大孝顺序)
添加元素需要实现Comparable接口或者创建Comparetor比较器