集合框架
存储多个数据/对象,使用数组
数组:存储相同数据类型一段连续的空间
限制:定长
添加、删除、统计比较麻烦
存储的是单列的值
学号---学生信息
订单号--订单详情
中文名称--英文名称
集合框架:一些接口和类
java.util包
Collection集合 存储单列数据的根接口
表示一组对象
一些 collection 允许有重复的元素,而另一些则不允许。
一些 collection 是有序的,而另一些则是无序的。
JDK 不提供此接口的任何直接 实现
提供更具体的子接口
List 列表 序列
有序(访问顺序和添加顺序一致)
有索引
允许重复
允许null
使用参考:动态数组
boolean add(E e)
void add(int index, E element)
boolean addAll(Collection<? extends E> c)
boolean addAll(int index, Collection<? extends E> c)
E get(int index)
E remove(int index)
boolean remove(Object o)
boolean removeAll(Collection<?> c)
void clear()
Iterator<E> iterator()
ListIterator<E> listIterator()
boolean contains(Object o)
int indexOf(Object o)
boolean isEmpty()
Object[] toArray()
Iterator接口 专门迭代Collection接口
boolean hasNext() 如果仍有元素可以迭代,则返回 true。
E next() 返回迭代的下一个元素
ArrayList 动态数组
不是线程安全的
特点:底层通过数组来实现
增加,删除效率低
随机访问速度快
内存使用率不高
使用场景:频繁增删的,不要选它。
LinkedList
底层结构:双向链表
增删相对效率高(首尾元素增删效率高)
随机访问效率低
元素散乱分布,内存使用率高
作为List的实现类,ArrayList可以做的事情,LinkedList都可以做
作为Deque(双端队列)的实现类:
支持在两端插入和移除元素
xxxFirst() xxxLast()
作为队列: 先进先出
添加--往队尾添
移除/获取---从队头操作
offer(e) 往队尾添
poll() 获取并移除队头
peek() 获取,但不移除队头
作为栈:先进后出
栈顶 --头部
push()压栈 addFist
pop() 弹栈(获取并移除) removeFirst
element()获取,但不移除getFirst
Vector 线程安全
使用方法同ArrayList
Stack 已经被LinkedList替代了
Set 数据集,集合
不包含重复元素
最多包含一个 null 元素
不要求有序
没有索引
参考:模仿了数学上的 set 抽象
HashSet
TreeSet
Map 映射 存储映射关系的接口
将键映射到值的对象--键值对
个映射不能包含重复的键;每个键最多只能映射到一个值(key:value 1对1 多对1)
没有索引
根据键来操作
HashMap
Collections 工具类 提供了操作集合的方法
泛型:jdk1.5之后新增
数据类型参数化
参数字母:E(element)K(key) V(Value) T(Type)
其实字母可以随意写 A U
好处:比较灵活,通用性比较好
注意使用场景:泛型集合类,泛型类,泛型方法
注:主页更多学习资料