List接口,Set接口具体复习,知识巩固
List接口
一.集合分类
Vector,ArrayList,LinkedList
二.基本底层
Vector:Object数组(同步)
ArrayList:Object数组
LinkedList:双向循环链表
三.ArrayList优缺点
优点:ArrayList底层以数组实现,是一种随机访问模式,便于遍历
缺点:删除和插入元素时,需要在删除或更改数据后再复制一份的操作
四.List相关对比
数组,list集合相互转换
数组—>List:Arrays.asList(array)
List–>数组:list自带的toArray();
ArrayList与LinkedList对比:
①ArrayList是动态数组,随机访问率高,增删速度慢,内存占用率较低,线程不安全
②LinkedList是双向链表,随机访问率比ArrayList低,增删率高,内存占用率高,线程不安全
ArrayList与Vector对比:
①都是有序集合
②Vector线程安全
③ArrayList性能优先于Vector
④扩容:Vector扩容扩容1倍,ArrayList扩容50%
Set接口
一.集合分类
HashSet,LinkedHashSet,TreeSet
二.基本底层
HashSet(无序,唯一):基于HashMap实现,底层HashMap保存元素
LinkedHashSet:继承HashSet,内存中由LinkedHashMap实现
TreeSet(有序,唯一):红黑树
三.Set相关对比
HashSet与HashMap对比:
HashMap | HashSet |
---|---|
实现Map接口 | 实现Set接口 |
存储键值对 | 存储键值 |
调用put()添加元素 | 调用add()添加元素 |
get获得指定键的value | 迭代器取出元素 |
Set和List区别
List特点:有序的容器,元素可重复,null值也可,元素有索引。查找效率高,删除插入元素较差
Set特点:无序的容器,元素不可重复,只可一个null就可,元素必须唯一
List的遍历方法
①普通for循环遍历,基于计数器
②迭代器遍历,基于Iterator
③foreach循环遍历,底层采用Iterator
欢迎大家点评,审阅!!!
作者:苹果葡萄秃秃
本文版权归作者和CSDN共有,欢迎转载,且在文章页面明显位置给出原文链接,未经作者同意必须保留此段声明,否则保留追究法律责任的权利。