java集合

前言

Java集合框架(Java Collections Framework,JCF)是Java中用于存储和操作一组对象的核心工具。它提供了一系列接口、实现类和算法,使得开发者能够高效地处理数据集合。

java集合框架

在这里插入图片描述
上面的图是从菜鸟教程搬过来的,解读如下:

  • 所有的集合类都在java.util包下,java集合类是由两个接口派生出来的,分别是collection(集合)和Map(图)。
  • collection接口有三种子类型,分别是:List、Set、Queue,再下面就是各种抽象类,最后是具体的实现类。
    注意Map不是Collection的子接口
  • Map接口是键-值对象顶层接口,下面还包含了一些子接口和实现类。AbstractMap是个抽象类,它实现了Map接口中的大部分API。而HashMap,TreeMap,WeakHashMap都是继承于AbstractMap。Hashtable虽然继承于Dictionary,但它实现了Map接口。

java集合各自的特点

java集合特点实现类
List有序可重复ArrayList、LinkedList、Vector、Stack
Set无序不可重复HashSet、TreeSet、LinkedHashSet
Queue遵循先进先出(FIFO)原则LinkedList、PriorityQueue、ArrayDeque
Map键值对集合,不允许键重复HashMap、LinkedHashMap、TreeMap、Hashtable

下面对几个主要的java集合的实现类进行比较:

  • List实现类的比较:
List实现类底层实现特点
ArrayList动态数组支持快速随机访问,但插入和删除元素慢
LinkedList双向链表随机访问慢,插入和删除快
Vector动态数组线程安全,性能较差
Stack实现后进先出的栈结构
  • Set实现类的比较:
Set实现类底层实现特点
HashSet哈希表元素无序,添加、删除和查找操作的时间复杂度为O(1)
TreeSet红黑树元素有序,添加、删除和查找操作的时间复杂度为O(log n)
LinkedHashSet哈希表和链表元素按插入顺序排序
  • Queue实现类的比较:
Queue实现类底层实现特点
LinkedList双向链表实现了Queue接口,可以用作队列
PriorityQueue基于堆实现的优先级队列元素按自然顺序或指定比较器排序
ArrayDeque基于动态数组实现的双端队列支持在两端插入和删除元素
  • Map实现类的比较:
Map实现类底层实现特点
HashMap哈希表键值对无序,添加、删除和查找操作的时间复杂度为O(1)
LinkedHashMap哈希表和链表键值对按插入顺序排序
TreeMap红黑树键值对有序,添加、删除和查找操作的时间复杂度为O(log n)
Hashtable哈希表线程安全的键值对集合,性能较差

List和Set的区别

  1. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。
  2. Set 检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>。
  3. List 和数组类似,可以动态增长,根据实际存储的数据的长度自动增长 List 的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值