1、List 、Set 和 Map 的区别
1) List, Set 都是继承自 Collection 接口。Map 相当于和 Collection 一个级别的;Map 集合存储键值对,且要求保持键的唯一性;
2) List 特点: 元素有放入顺序,元素可重复。Set 特点: 元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在 set 中的位置是有该元素的 HashCode 决定的,其位置其实是固定的)。Map 特点: 元素按键值对存储,无放入顺序 ;
3) List 接口有三个实现类:LinkedList,ArrayList,Vector。Set 接口有两个实现类:HashSet(底层由 HashMap 实现),LinkedHashSet。Map 接口有三个实现类:HashMap,HashTable,LinkedHashMap。
LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢。
2、ArrayList 、 LinkedList 与 Vector 的区别
-
因为 Array 是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。Array 获取数据的时间复杂度是 O(1),但是要删除数据却是开销很大的