java 1.8 集合接口一览表

本文深入解析Java集合框架,包括Collection、Set、List、Queue及其子接口的特性与方法,阐述各集合类型的功能差异与应用场景。
Collection集合接口抽象接口,没有直接实现类

int size()返回元素个数
boolean isEmpty()查询是否为空
 boolean contains(Object o)查询是否包含,通过equals方法判断
 boolean containsAll(Collection<?> c)批量判断是否包含
 boolean add(E e)添加元素,方法结束后集合一定包含指定元素,
如果集合禁止重复且元素已包含时将返回false;
当因为插入限制而无法添加时,且不是因为元素已包含时,必须抛IllegalStateException,而不是返回false
 boolean addAll(Collection<? extends E> c)批量添加
 boolean remove(Object o)删除元素,删除所有和指定对象相等的元素,当至少删除一个元素返回true
 boolean remove(Collection<?>)批量删除
 default boolean removeIf(Predicate<? super E> p)条件删除
 boolean retainAll(Collection<?> c)两个集合取交集
 Object[] toArray()元素导入新建数组
 T[] toArray(T[] a)元素导入给定数组
 void clear()清空集合
 Iterator<E> iterator()返回迭代器
 default Splitrator<E> spliterator()返回并发迭代器
 default Stream<E> stream() 
 default Stream<E> parallelStream() 
Set extends Collection数学集合元素不重复,无序,可包含一个null
通过元素的equal方法确定是否重复
注意如果元素是可变类型的,那修改一个元素使其equals另一个元素,那么Set将不保证元素的唯一性
 @Override boolean add(E e)添加元素,当指定元素已包含时,返回false
 @Override boolean equals(Object o)当指定对象也是Set类型,两个Set的元素数目一样,且当前Set包含指定Set所有元素
 @Override int hashCode()返回哈希值,等于所有元素的哈希值的和,保证了两个Set如果equals那么hashCode一定相同
List extends Collection序列元素有先后顺序,元素可重复
 default void sort(Comparator<? Super E> c)排序
 default void replaceAll(UnaryOperator<E>)更新每个元素为对应的运算结果
 E set(int index, E element)更新指定位置的元素
 void add(int index, E element)在指定位置插入元素
 E remove(int index)删除指定位置的元素
 int indexOf(Object o)查询和指定对象相等的第一个元素的位置
 int lastIndexOf(Object o)查询和指定对象相等的最后一个元素的位置
 ListIterator<E> listIterator()返回列表迭代器
 List<E> subList<int fromIndexm, int toIndex>返回子列表试图
 @Override boolean equals(Object o)当指定对象也是List类型,两个List包含相等元素且顺序相同,返回true
 @Override int hashCode()返回哈希值,保证两个List如果equals那么hashCode一定相等,但是hashCode相等的两个List并不一定equals
Queue extends Collection队列接口只定义对头出队、队尾入队和查询队头三种方法
@Override boolean add(E e)入队,如果队列满了,则抛IllegalStateException
boolean offer(E e)入队,如果队列满了,则返回false
@Override E remove()出队,如果队列空了,则抛NoSuchElementException
E poll()出队,如果队列空了,则返回null
E element()查询队头,如果队列空了,则抛NoSuchElementException
E peek()查询队头,如果队列空了,则返回null
BlockingQueue extends Queue阻塞队列(线程安全)当某些操作需要的条件当前无法满足,但可能在将来某个时间点满足时,该接口均支持4种策略:
1、抛出异常->add 、remove、 element
2、返回特殊值(false、null) ->offer、 poll、 peek
3、有限等待,如果条件一致不满足,等到超时时间,返回特殊值->offer(timeout)、poll(timeout)
4、无限等待,直到条件满足 -> put、 take 
 boolean offer(E e, ling timeout, TimeUnit unit)入队,如果队列满了,则等待指定的时间,如果仍满则返回false
 void put(E e)入队,如果队列满了,则一直等待,直到队列不满
 E poll(long timeout, TimeUnit unit)出队,如果队列空了,则等待指定的时间,如果仍空则返回null
 E take()出队,如果队列空了,则一致等待,直到队列不空
 int drainTo(Collection<? Super E> c)排水方法:所有元素依次转移到给定集合中
 int drainTo(Collection<? Super E> c, int maxElements)排水方法:指定数量的元素依次转移到给定集合中
Deque extends Queue双端队列只能在队尾或者队头入队出队
 void addFirst(E e)对头入队,如果队列满了,则抛IllegalStateException,当使用容量限制的deque时,通常最好使用方法offerFirst
 void addLast(E e)对尾入队,如果队列满了,则抛IllegalStateException,当使用容量限制的deque时,通常最好使用方法offerLast
 boolean offerFirst(E e)队头入队,如果队列满了,则返回false
 boolean offerLast(E e)队尾入队,如果队列满了,则返回false
 E removeFirst()队头出队,如果队列空了,则抛NoSuchElementException
 E removeLast()队尾出队,如果队列空了,则抛NoSuchElementException
 E pollFirst()队头出队,如果队列空了,则返回null
 E pollLast()队尾出队,如果队列空了,则返回null
 E getFirst()查询队头,如果队列空了,则抛NoSuchElementException
 E getLast()查询队尾,如果队列空了,则抛NoSuchElementException
 E peekFist()查询队头,如果队列空了,则返回null
 E peekLast()查询队尾,如果队列空了,则返回null
 boolean removeFirstOccurrence(Object o)删除和指定对象相等的第一个元素,如果发生删除则返回true
 boolean removeLastOccurrence(Object o)删除和指定对象相等的最后一个元素,如果发生删除则返回true
 void push(E e)意象方法,把deque看做栈,表示入栈,如果队列满了,则抛IllegalStateException,实际实现中直接调用addFirst方法
 E pop()意象方法,效果和removeFirst一样,把deque看做栈,表示出栈,如果队列空了,则抛NoSuchElementException,实际实现中直接调用removeFirst方法
BlockingDeque extends BlockingQueue, Deque阻塞双端队列(线程安全) 
 boolean offerFist(E e, long timeout, TimeUnit unit)队头入队,如果队列满了,则等待指定的时间,如果仍满则返回false
 boolean offerLast(E e, long timeout, TimeUnit unit)队尾入队,如果队列满了,则等待指定的时间,如果仍满则返回false
 void putFist(E e)队头入队,如果队列满了,则一直等待,直到队列不满
 void putLast(E e)队尾入队,如果队列满了,则一直等待,直到队列不满
 E pollFirst(long timeout, TimeUnit unit)对头出队,如果队列空了,则等待指定的时间,如果仍空则返回null
 E pollLast(long timeout, TimeUnit unit)对尾出队,如果队列空了,则等待指定的时间,如果仍空则返回null
 E takeFirst()队头出队,如果队列空了,则一致等待,直到队列不空
 E takeLast()队尾出队,如果队列空了,则一致等待,直到队列不空
### Java 集合框架的继承关系与类图结构 Java 集合框架是一个统一的体系结构,用于表示和操作集合数据,它通过一组接口和实现类提供通用的数据结构操作。整个集合框架基于多个接口,如 `Collection`、`List`、`Set`、`Map` 等,并提供了诸如 `ArrayList`、`LinkedList`、`HashSet`、`HashMap`、`TreeMap` 等常用实现类[^1]。 集合框架中还包含抽象类,如 `AbstractCollection`、`AbstractList`、`AbstractSet`、`AbstractMap`,它们为集合类提供了部分实现,简化了自定义集合类的开发。实现类通过继承这些抽象类并实现接口方法,构建出完整的集合类层次结构[^3]。 #### Java 集合类的继承关系图 以下是对 Java 集合类主要结构的描述: - **`Collection` 接口** 是集合的根接口,定义了集合的基本操作。 - `List` 接口:有序、可重复的集合,实现类包括 `ArrayList`、`LinkedList`。 - `Set` 接口:无序、不可重复的集合,实现类包括 `HashSet`、`LinkedHashSet`、`TreeSet`。 - `Queue` 接口:支持队列操作的集合,如 `PriorityQueue`。 - **`Map` 接口** 是独立于 `Collection` 的接口,表示键值对集合。 - 实现类包括 `HashMap`、`LinkedHashMap`、`TreeMap`、`Hashtable`。 - `Hashtable` 是线程安全的实现,而 `HashMap` 不是,但可以通过 `Collections.synchronizedMap` 包装来实现同步。 - **抽象类** 提供了对集合接口的部分实现。 - `AbstractCollection` 是 `Collection` 接口的抽象实现。 - `AbstractList`、`AbstractSet`、`AbstractMap` 分别为 `List`、`Set`、`Map` 提供基础实现。 - **工具类 `Collections`** 提供了多种静态方法用于操作集合,例如排序、查找最大最小值、反转列表等。 #### 示例代码:查看类继承关系 在 IntelliJ IDEA 中可以使用快捷键 `Ctrl+Shift+Alt+U`(Windows)或 `Cmd+Shift+Alt+U`(Mac)查看类的继承关系图: ```java import java.util.ArrayList; public class InheritanceExample { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); System.out.println(list.getClass().getSuperclass()); } } ``` 执行上述代码会输出 `class java.util.AbstractList`,表示 `ArrayList` 继承自 `AbstractList`。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值