Java集合类

35 阅读1分钟

List、Set和 Map三大类的集合

List和Set继承于Collection,List可以保存的对象可以重复,而Set保存的对象不可以重复.

Map是通过key-value方式来进行存储.

数组

数组存储区间是连续的,占用内存严重,故空间复杂的很大.但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入,删除,扩展困难.

链表

链表分为单向链表,双向链表,循环链表,通过指针将两个元素连接在一起,所以链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N),.链表的特点是:寻址困难,插入,删除和扩展容易.

哈希表

哈希表其实是结合了数组和链表的优点,进行的折中方案,平衡了数组和链表的优缺点.

图-1

List:元素可以重复

ArrayList:数组结构,线程不安全

LinkedList:双向链表结构,线程安全

Vector:数组结构,线程安全

Stack:底层是Vector,栈模式先进后出

Set:元素不可以重复

HashSet:内部通过HashMap来实现,通过哈希算法来防止重复,线程不安全

LinkedHashSet:元素严格按照放入顺序排列