集合
一.集合的基本概念
-
集合是用来装东西的,就好像一个容器.
-
数组是一个容器
-
数组的缺点:长度不能改变,只能存储同一种数据
-
java为什么要提供许多集合类来存储数据
-
1.因为要求集合类的长度是可变的
-
2.不同的数据存储,操作方式不同
-
3.底层有数组,链表,Hash表,树来实现
-
ArrayList底层数组实现
List元素可重复 LinkedList底层链表实现
Vocter底层数组实现线程安全
单列集合 Collection
Set元素不可重复 HashSet底层hash表实现
集合 TreeSet底层红黑树实现
HashMap
双列集合 Map TreeMap
HashTable
二.集合的体系
1.单列集合collection–(接口)
-
set接口:元素不可重复
- 包含:Hashset类(底层由哈希表实现),Treeset类(底层由树实现)
-
list接口:元素可重复
- 包含:ArrayList类(数组底层实现),LinedList类(底层链表实现),Vector类(底层链表实现–线程安全)
2.双列集合Map–()接口
HashMap类
TreeMap类
Hashtable类
迭代器
三.# List,ArrayList,LinkedList的特点,
- List 元素可重复
- List接口特点:
- 可以存储重复元素
- 有序的(按照元素的存入的顺序排列)
- ArrayList 底层数组实现,查询快,增删慢
- 创建之初,在底层创建一个默认长度为10的数组,
- 当数组内容添加满了后,再继续添加时会扩容一个新数组,为原来的1.5倍
- 缺点:扩容后,元素不能存满,空间浪费
- LinkedList 底层是链表实现,查询慢,增删快
- 元素查找时从第一个字节向后查找
- 增加,删除元素时,其他元素位置不动,只需要改变指针域的值即可