集合

集合
容器技术,数组、向量Vector、哈希表Hashtable、 字典Dictionary、枚举Enumeration、 属性列表Properties

Collection接口
集合中的元素都是引用数据类型
Collection接口是集合框架中顶层接口,接口内部定义一系列操作集合的方法
boolean add(E e)
确保此集合包含指定的元素(可选操作)
boolean addAll(Collection<? extends E> c)
将指定集合中的所有元素添加到此集合(可选操作)
void clear()
从此集合中删除所有元素(可选操作)
boolean contains(Object o)
如果此集合包含指定的元素,则返回 true
boolean containsAll(Collection<?> c)
如果此集合包含指定集合中的所有元素,则返回true
boolean equals(Object o)
将指定的对象与此集合进行比较以获得相等性
int hashCode()
返回此集合的哈希码值
boolean isEmpty()
如果此集合不包含元素,则返回 true
Iterator iterator()
返回此集合中的元素的迭代器
default Stream parallelStream()
返回可能并行的 Stream与此集合作为其来源
boolean remove(Object o)
从该集合中删除指定元素的单个实例(如果存在)(可选操作)
boolean removeAll(Collection<?> c)
删除指定集合中包含的所有此集合的元素(可选操作)
default boolean removeIf(Predicate<? super E> filter)
删除满足给定谓词的此集合的所有元素
boolean retainAll(Collection<?> c)
仅保留此集合中包含在指定集合中的元素(可选操作)
int size()
返回此集合中的元素数
default Spliterator spliterator()
创建一个Spliterator在这个集合中的元素
default Stream stream()
返回以此集合作为源的顺序 Stream
Object[] toArray()
返回一个包含此集合中所有元素的数组
T[] toArray(T[] a)
返回包含此集合中所有元素的数组; 返回的数组的运行时类型是指定数组的运行时类型

List接口
继承Collection接口
有序集合(存储元素的顺序和取出元素的顺序一致,可以通过索引位置访问元素)
可重复
在Collection接口上新增一些方法
void add(int index, E element)
将指定的元素插入此列表中的指定位置(可选操作)
boolean addAll(int index, Collection<? extends E> c)
将指定集合中的所有元素插入到此列表中的指定位置(可选操作)
int indexOf(Object o)
返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1
int lastIndexOf(Object o)
返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1
E remove(int index)
删除该列表中指定位置的元素(可选操作)
E set(int index, E element)
用指定的元素(可选操作)替换此列表中指定位置的元素
E get(int index)
返回此列表中指定位置的元素
List subList(int fromIndex, int toIndex)
返回此列表中指定的 fromIndex (含)和 toIndex之间的视图
List接口常见实现类
ArrayList
LinkedList
Vector
ArrayList
底层通过数组实现
数组初始容量为10(不是new就是10,在第1次执行add方法的时候)
内部通过数组拷贝实现扩容,当容量超出时,会扩容为原来的1.5倍
线程不安全(不同步)JDK1.5版本设计一个CopyOnWriteArrayList
数组一旦创建不能改变,因此在非末端插入和删除
数据的时候,由于可能会涉及到到数组拷贝问题,因此修改和删除效率比较低
LinkedList
底层通过双向链表实现
元素是通过首尾指针连接,在进行修改(新增、删除)元素的时候只需要修改指针即可,一般情况修改效率要比ArrayList高,但是在查询时,LinkedList比ArrayList效率低,链 表从第1个元素开始依次向后搜索
比较适合数据的动态插入和删除
随机访问和遍历速度比较慢
Vector
底层通过数组实现,早期集合类JDK1.0
线程安全
淘汰 -单线程环境建议使用ArrayList,多线程环境建议使用CopyOnWriteArrayList

List
有序:存储顺序
可重复:可以存储重复元素
List接口常见实现类
集合作为一种存储数据的容器,开发中使用最频繁的对象类型之一
JDK提供了一系列集合类型,这些集合类型使用不同的数据结构来实现,因此,不同的集合类型,使用场景也不同
数据结构:
数组,链表,栈 先进后出,队列 先进先出
【在面试的时候,都会被问到一个问题: ArrayList和LinkedList的区别?】
大部分的同学都能回答: ArrayList是基于数组实现,LinkedList是基于双向链表实现的,在回答使用场景的时候,也能够回答 ArrayList 便于遍历,LinkedList 便于新增、删除元素
List接口
AbstractList 实现了 List接口
ArrayList Vector LinkedList 继承 AbstractList

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值