JDK知识之集合

本文介绍了Java集合框架的基础知识,包括List、Set、Queue和Map四大接口及其常见实现类。重点讨论了HashSet的实现原理、并发集合如CopyOnWriteArrayList和CocurrentHashMap的特点,以及List循环删除时可能出现的异常和fail-fast/fail-safe的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、定义

集合是用来存储数据的容器。Java中的集合接口有两大类:Collection接口和Map接口。 Collection接口下面有List接口和Set接口;其中,List接口的主要实现类是ArrayList、LinkedList、Stack、Queue等;Set接口的主要实现类是HashSet等。 Map接口的主要实现类有:HashMap、Hashtable、CocurrentHashMap等;

二、常见集合

1、List

JDK集合之List-优快云博客

2、Set

HashSet是一个由HashMap实现的集合,元素无序且不能重复。若需要按插入顺序排序,可以使用LinkedHashSet。若需要按自定义规则排序,可以使用TreeSet,底层是通过TreeMap实现。HashSet是线程不安全的,若要使用线程安全的Set集合,可以采用Collections.synchronizedSet()构造一个线程安全的Set,CopyOnWriteArraySet。 HashSet底层原理是基于HashMap实现的,相关HashSet操作,基本上都是直接调用HashMap的相关方法来完成。

3、Queue

BlockingQueue是Queue接口的子接口。它支持阻塞的插入和移除元素。下面是它支持的方法:

插入:

a、add:插入过程出错会抛出异常

b、put:当队列满的时,队列会阻塞插入元素的线程,直到队列没有塞满可以插入元素为止

c、offer:在put的基础上加了超时机制

移除:

a、remove:删除过程出错会抛出异常

b、take:当队列尾空时,队列会阻塞获取元素的线程,直到队列变为非空可以获取元素为止。

c、poll:在take的基础上加了超时机制

查看:

a、element

b、peek

4、Map

JDK集合之Map-优快云博客

三、并发集合

1、定义

2、种类

(1)CopyOnWriteArrayList

(2)CocurrentHashMap

四、List、Set、Map的区别

  • 数据结构
  • 元素是否有序
  • 元素是否可重复
  • 键值是否为null HashMap允许key和value为null;HashTable不允许key和value为null;TreeMap不允许key为null,但是value可以为null;

五、常见问题

1、循环删除List元素可能发生的异常

  • IndexOutOfBoundsException:下标越界异常;
  • ConcurrentModificationException:迭代器遍历fail-fast集合时,会由于对集合进行修改或者删除操作引发并发修改异常

2、fail-fast和fail-safe的区别

  • fail-fast和fail-safe是集合中的一种错误处理机制。
  • fail-fast是快速失败机制,当集合利用迭代器进行遍历时,出现结构变更,会抛出CocurrentModificationException。java.util包中的所有集合都被设计为fail-fast机制的,比如ArrayList、HashMap等。
  • fail-safe是安全失败机制,遍历过程中结构发生变更是安全的,不会抛出ConcurrentModificationException。juc包中的并发集合都被设计为fail-safe机制,比如CopyOnWriteArrayList、ConcurrentHashMap等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值