对 List 、Set、Map 的理解
1.List 继承自 collection 接口,List 的元素有顺序,而且可以重复,各元素的顺序就是对象插入的顺序。
子类 Arraylist:储存方式是数组(索引 0 开始),线程不安全,效率高,可以根据所以位置对集合进行快速的随机访问,插入和删除时因元素的位置而速度不同,因为插入或删除一个元素时,后面的元素都需要调整一下顺序;
子类 Linkedlist :储存方式是双向链表,插入和删除快,因为每一个值都有下一个值的地址,插入删除时只需要调整下个值的指向就可以了,但是查询慢;
2.set 继承自 collection 接口,set 的元素没有顺序,不能重复,Set 集合只是简单地把对象加入到集合。
子类 HashSet:储存方式是哈希表,利用 HashCode 和 equals 判断元素是否重复
子类 TreeSet:储存方式是二叉树,使用它可以从 Set 中提取有序(升序或者降序)的序列。
3.Map 没有实现任何接口,map 的元素没有顺序,通过键值对存取,键不能重复,值可以重复-
子类 HashMap:储存方式哈希表,线程不安全(不同步),提供所有可选的映射操作,允许使用 null 键和 null 值
子类 HashTable:线程安全(同步)