当前位置: 首页 > news >正文

JAVA集合

List(ArrayList、LinkedList、Vector)
Map(HashMap->LinkedHashMap,TreeMap,HashTable)
Set(HashSet->LinkedHashSet,TreeSet)

List接口

特点:单列数据的集合;可以存放同一种类型的元素、元素之间有序、元素允许重复的集合,集合中每个元素都有其对应的顺序索引。

ArrayList

1.内部存储用的数据结构是用**数组(动态调整大小)**实现,默认初始容量为10。动态扩容

优点:使用数组实现,因此内部元素可以通过索引实现快速随机访问(检索集合中特定索引位置的元素)。
缺点: 1. 从ArrayList中间位置插入和删除元素,都需要循环移动其他元素元素的位置。

            2. 数组空间不够需要扩容时,会开辟一个新的数组把旧的数组元素拷贝过去,比较耗性能。

            3.线程不安全

LinkedList

内部存储用的数据结构是用双向链表实现

  • 优点:使用链表实现,适合动态的插入和删除。
  • 缺点:1.随机访问元素的速度相对较慢。
               2.基于链表数据结构的实现,占用的内存空间比较大(除了保存数据本身,还要保存指针信息)。

Vector

基于 数组(动态调整大小) 数据结构实现,初始容量是10。

  • 优点:线程安全
  • 缺点:效率低,增加元素、删除元素、查找元素都很慢。

ArrayList内部方法

方法描述
add(Object obj)将数据元素插入到ArrayList的指定位置上
addAll()将一个新集合中的所有元素添加到ArrayList中
clear()删除ArrayList中所有的元素
contains()判断元素是否在ArrayList中
get()通过索引值获取ArrayList中的元素
indexOf()返回ArrayList中某个元素的索引值
removeAll(ArrayList list)删除ArrayList中指定集合的所有元素
remove(int index || Object obj)删除ArrayList里的单个元素
size()返回ArrayList的元素数量
isEmpty()判断ArrayList是否为空
subList()截取ArrayList的部分元素
set(int index, Object obj)替换ArrayList中指定索引的元素
sort()--Collections.sort(ArrayList)对ArrayList的数据元素进行排序
toArray()将ArrayList转换为数组
toString()将ArrayList转换为字符串
ensureCapacity()设置指定容量大小的ArrayList
lastIndexOf()返回指定元素在ArrayList中最后一次出现的位置
retainAll()保留指定集合中的数据元素
containsAll()查看ArrayList是否包含了指定集合的所有元素
trimToSize()将ArrayList的容量调整为数组的元素个数
removeRange()删除ArrayList中指定索引间存在的元素
replaceAll()用给定的数据元素替换掉指定数组中每个元素
removeIf()删除所有满足特定条件的ArrayList元素
forEach()遍历ArrayList中每个元素并执行特定操作

Linked List内部方法

方法描述
public void addFirst(E e)将元素添加到集合的头部。
public void addLast(E e)将元素添加到集合的尾部。
public boolean offer(E e)向链表的末尾添加元素,成功为true,失败为false。
public boolean offerFirst(E e)在链表头部插入元素,成功为true,失败为false。
public boolean offerLast(E e)在链表尾部插入元素,成功为true,失败为false。
public void clear()清空链表。
public E removeFirst()删除并返回链表的第一个元素。
public E removeLast()删除并返回链表的最后一个元素。
public boolean remove(Object o)删除某一元素,成功为true,失败为false。
public E remove(int index)删除指定位置的元素。
public E poll()删除并返回第一个元素。
public E remove()删除并返回第一个元素。
public E getFirst()返回第一个元素。
public E getLast()返回最后一个元素。
public int lastIndexOf(Object o)查找指定元素最后一次出现的索引。
public E peek()返回第一个元素。
public E element()返回第一个元素。
public E peekFirst()返回头部元素。
public E peekLast()返回尾部元素。
public Iterator descendingIterator()返回倒序迭代器。
public ListIterator listIterator(int index)返回从指定位置开始到末尾的迭代器。

Map

特点:有键值对,键不能重复, 没有继承Collection接口;HashMap中的Entry对象是无序排列的;
Map的entrySet()方法返回一个实现Map.Entry接口的对象集合:
(1) Object getKey(): 返回条目的关键字
(2) Object getValue(): 返回条目的值
(3) Object setValue(Object value): 将相关映像中的值改为value,并且返回旧值

HashMap

此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

方法描述
Object put(Object key, Object value)将元素添加到Map。
Object remove(Object key)从映像中删除与key相关的映射。
void putAll(Map t)将来自特定映像的所有元素添加给该映像。
void clear()从映像中删除所有映射。
Object get(Object key)获得与关键字key相关的值。
boolean containsKey(Object key)判断映像中是否存在关键字key。
boolean containsValue(Object value)判断映像中是否存在值value。
int size()返回当前映像中映射的数量。
Set keySet()返回映像中所有关键字的视图集。
Collection values()返回映像中所有值的视图集。
Set entrySet()返回Map.Entry对象的视图集,即映像中的关键字/值对。(Entry en : Map.EntrySet())

TreeMap

  • 键的自然顺序(如果键实现了 Comparable 接口)或根据指定的比较器(Comparator)排序。键值对始终以排序后的顺序存储,并且在遍历时会按照升序返回键值对
  • TreeMap 提供了一些额外的功能,如 firstKey()lastKey()headMap()tailMap() 等方法,便于按范围查询或按顺序访问键值对。

  • 基于红黑树实现的;TreeMap就没有调优选项,因为红黑树总是处于平衡的状态

HashTable

  • 和HashMap一样,Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射。
  • 它的key、value都不可以为null。此外,Hashtable中的映射不是有序的
  • 和HashMap的继承不同,线程安全不同,遍历内部实现不同,允不允许null值不同等

Set

HashSet

特点:无序,元素不重复,可以有空值

TreeSet

特点:有序,元素不能重复,不能有空值;它可以确保元素按照升序或降序排列

LinkedHashSet

是HashSet的一个子类,需要保持元素的插入顺序,可以选择使用 LinkedHashSet(不能按照升序或降序排列)

相关文章:

  • python 视频处理库moviepy 设置字幕
  • 【LeetCode Hot100 矩阵】矩阵置零、螺旋矩阵、旋转图像、搜索二维矩阵II
  • 开源协议深度解析:理解MIT、GPL、Apache等常见许可证
  • JavaScript 简介
  • 枚举类型Enum
  • DeepSeek-R1 + Cherry Studio 本地部署打造个人 AI 知识库
  • C语言01
  • Kimi k1.5:继Deepseek R1 后多模态 AI 的新标杆
  • 低成本、高效率且成熟的电商实时数据采集方案:梦想成真?
  • 放大镜效果
  • 图论算法篇:邻接矩阵以及邻接表和链式前向星建图
  • winfrom实现人脸识别比对功能
  • 大模型开发实战篇5:多模态--文生图模型API
  • 如何设置Python爬虫的User-Agent?
  • torch-xla动态shape——通过torch.nonzero分析mhlo实现
  • 第六天:requests库的用法
  • JS数组扁平化
  • Java与Go相比,有什么独特的优势
  • Openshift或者K8S上部署xxl-job
  • 电商分布式场景中如何保证数据库与缓存的一致性?实战方案与Java代码详解
  • 宁波市人大常委会审议生育工作报告,委员建议学前教育免费
  • 哥伦比亚总统称将在访华期间签署“一带一路”倡议意向书,外交部回应
  • 陕南多地供水形势严峻:有的已呼吁启用自备水井
  • 李云泽:再批复600亿元,进一步扩大保险资金长期投资试点范围
  • 正荣地产:公司控股股东已获委任联合清盘人
  • 老人刷老年卡乘车被要求站着?公交公司致歉:涉事司机停职