目录
集合
概述
集合类存放的都是对象的引用,而非对象本身
不能存放基本数据类型,只能存放引用数据类型
集合的类型有三种:set(集)、list(列表)、map(映射)
集合和数组的关系、区别
集合是一个动态的数组,数组的长度时不可变的,集合的长度是可变的
特点
Collection接口里的元素是可重复的但无序的
List集合.有序,可重复,有索引
Map集合.无序,以键值对的方式进行存储,键不可重复,值可以重复(key------value)。
Set元素无序,通过链表进行存储,元素不可重复
ArrayList(对数组进行了封装,本质其实就是数组)
只能存储引用数据类型
是顺序结构,有序的
特点:查询快,增删慢,线程不安全,效率高
链式操作:
System.out.println(List.get(0).name);
往指定索引位置插入元素,不需要手动位移扩容插入
List.add(0,dog2);
删除指定索引位置的元素
List.rermove(0);
判断某个元素是否存在于集合中
List.contains(dog);会返回一个布尔型的值
LinkedList
它的底层数据结构是链表
特点:查询慢,增删快,线程不安全,效率高
是基于头尾的数据进行操作
栈顶元素(执行速度快)
删除--pop
去除--peek
Map集合
是存储键值对元素的集合,不能包含重复的键,每个键最多映射到一个值
HashMap集合
可序列化的,线程不安全的
底层是基于数组,链表和红黑树实现的
Set集合
无序,元素不重复
通过迭代器进行迭代
判断迭代器中是否有下一个元素
iterator.hashNext();
HashMap是无序存放的,所以无法直接通过索引遍历,且key值不可重复,正好和Set集合特点一样 。
for each循环
for(String key : set){
}
冒号左边是集合中取出值的对应空间类型,冒号右边是你要遍历的集合
增强型for循环
在使用增强for循环时要注意判空
HashSet
线程不安全,效率高,允许储存null元素
元素无序且唯一
TreeSet
继承于AbstractSet。是Set集合
具有Set的属性、方法
TreeSet基于TreeMap实现
底层是红黑树