java集合之Collection接口体系

news2025/1/25 7:48:42

一、集合概述

        java集合框架标准化了程序处理对象组的方式,它是在J2SE 1.2版本时增加的。
        在集合框架之前,Java提供了特定的类来存储和管理对象组,如Dictionary、Vector、Stack、Properties。尽管这些类很有用,但是缺少了集中、同一的主题。比如Vector和Properties的使用方式不同,另外早期没有被设计为易扩展、易改造的方式,那么集合框架技术用来解决这些问题的

       集合框架满足的设计目标:
              1.必须是高性能的
              2.必须允许不同类型的集合以类似的方式进行工作,并且具有高度的可操作性
              3.集合对于扩展和改造必须是易于实现的

         算法是集合机制的另一重要组成部分。算法操作集合,都被定义为Collections类中的静态方法,算法为操作集合提供了标准的方式

         与集合框架密切相关的另外一个内容是Iterator接口。称为迭代器。迭代器为访问集合中的元素提供了通用的、标准的方式,每次访问一个元素

二、单列集合基础接口清单

序号接口名称描述
1Collection允许操作一组对象,位于集合层次结构的顶部
2List扩展Collection以处理序列(对象列表)
3Set扩展Collection以处理集合,集合中的元素对象必须唯一
4SorteSet扩展Set接口已处理已排序的集合
5NavigableSet扩展SorteSet以基于最接近匹配原则检索元素对象
6Queue扩展Collection以处理特殊类型的列表,这种类型的列表只能从列表顶部删除元素对象
7Deque扩展Queue以处理双端队列

三、Collection接口体系图

四、接口

1.定义:Collection接口是最基本的集合接口,它不提供直接的实现,Java SDK提供的类都是继承自Collection的“子接口”如List,Set和Queue。Collection所代表的是一种规则,它所包含的元素都必须遵循一条或者多条规则。如有些允许出现重复元素而有些则不允许重复、有些必须要按照顺序插入而有些则是散列,有些支持排序但是有些则不支持等等

2.接口定义常用方法

序号返回值方法作用
1booleanadd(E e)向集合中添加指定的元素,添加成功返回 true,否则返回false。若实现该接口的集合实现类不允许元素对象重复且需要添加的元素在集合中已存在,则返回false
2booleanaddAll(Collection<? extends E> c)将指定集合中的所有元素添加到当前集合,添加成功返回 true,否则返回false
3booleancontains(Object o)检查集合释放包含指定的元素,包含则返回 true,否则返回false
4booleancontainsAll(Collection<?> c)检查集合中是否包含指定集合中的所有元素,包含则返回true,否则返回false
5inthashCode()获取指定集合的哈希码值
6booleanisEmpty()检查集合中是否存在有效元素(对象),如果不存在元素,则返回 true,否则返回false
7Iterator<E>iterator()迭代器方法,返回一个迭代器对象,用于遍历集合中的元素
8booleanremove(Object o)从集合中删除指定元素的单个实例(如果存在),删除成功返回 true,否则返回false
9booleanremoveAll(Collection<?> c)从集合中删除指定集合包含的所有元素,删除成功返回 true,否则返回false
10intsize()返集合中的元素数量
11Object[]toArray()将指定集合中的元素转换成一个数组对象

五、List接口

 1.定义:List接口继承了Collection接口中的所有方法,同时对其进行的相应的扩展,实现了该接口的集合对象可以存储重复的元素对象

        List集合特点

  • List接口Collection接口的子接口
  • List集合中的元素是有序且可以重复的
  • List集合中的每个元素(对象)都有其对应的索引顺序
  • List集合中的元素都对应一个整数型的序号记载其在集合中的位置,可根据该序号获取对应元素(对象)索引序号是从0开始

2.接口定义常用方法

序号返回值方法作用
1booleanadd(E e)向集合中添加指定的元素,添加的元素默认添加到该集合的末尾,添加成功返回 true,否则返回false
2booleanadd(int index, E element)将指定的element元素添加到集合中的指定位置,在插入点及其后存储的的元素自动后移,添加成功返回 true,否则返回false
3booleanaddAll(int index, Collection<? extends E> c)将指定集合c中的所有元素添加到当前集合中的指定位置,在插入点及其后存储的的元素自动后移,添加成功返回 true,否则返回false
4Eget(int index)获取集合中指定位置的元素
5intindexOf(Object o)获取集合中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。
6intlastIndexOf(Object o)获取集合中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1
7ListIterator<E>listIterator()返回集合中元素的迭代器列表对象,该迭代器集合列表从集合的第一个元素开始
8ListIterator<E>listIterator(int index)返回集合中元素的迭代器列表对象,该迭代器集合列表从集合的指定位置开始
9Eset(int index, E element)将集合中的指定位置的元素对象用指定的元素对象进行替换

六、Set接口

     Set接口继承了Collection接口中的所有方法,其自身没有进行的相应的扩展,但声明了实现了该接口的集合对象不允许存储重复的元素对象

七、SorteSet接口

1.定义:SortedSet接口继承了Set接口,并且定义了已升序进行排序的方法,该接口除了从Set继承过来的方法外,还定义了如下方法

2.接口定义常用方法

序号返回值方法作用
1Comparator<? super E>comparator()返回用于对该集合中的元素进行排序的比较器,如果使用自然排序则返回null
2Efirst()返回集合中已排序后集合的的第一个元素
3SortedSet<E>headSet(E toElement)返回该集合的部分的视图,其元素严格小于 toElement
4Elast()返回集合中当前已排序后集合的最后(最高)元素
5SortedSet<E>subSet(E start, E end)返回该集合的部分的元素对象集合,其元素的范围为 start (含)—end-1之间的元素组合
6SortedSet<E>tailSet(E start)返回该集合的大于或等于 start的部分的元素组合

八、NavigableSet接口

 1.定义:NavigableSet<E>继承了SortedSet接口,并且声明了支持基于最近匹配原则检索元素对象的集合行为

2.接口定义常用方法

序号返回值方法作用
1Eceiling(E obj)在集合中查找大于等于obj的最小元素,如果检索到就返回对应的元素,否则返回null
2Efloor(E e)在集合中查找小于等于obj的最大元素,如果检索到就返回对应的元素,否则返回null
3Iterator<E>iterator()将集合中的元素按照升序返回此集合的迭代器对象
4Iterator<E>descendingIterator()将集合中的元素按照降序返回此集合的迭代器对象
5Ehigher(E e)在集合中查找大于obj的最小元素,如果检索到就返回对应的元素,否则返回null
6Elower(E e)在集合中查找小于obj的最大元素,如果检索到就返回对应的元素,否则返回null
7EpollFirst()检索并删除第一个元素,如果此集合为空,则返回 null
8EpollLast()检索并删除最后一个元素,如果此集合为空,则返回 null

九、Queue接口

 1.定义:Queue<E>继承了Collection接口中的所有方法,并声明了队列的行为,队列通常是先进先出的列表

2.接口定义常用方法

序号返回值方法作用
1Eelement()获取队列头部的元素对象,不移除元素,如果队列为空,则抛出异常
2booleanadd(E e)向队列中插入指定的元素,如果插入成功,则返回true,队列空间已满无法插入时抛出异常
3Eoffer(E e)向队列中插入指定的元素,如果插入成功,则返回true,否则返回flase
4Epeek()获取队列头部的元素对象,不移除元素,如果队列为空,则返回null
5Epoll()获取队列头部的元素对象,且从队列中移除元素,如果队列为空,则返回null
6Eremove()移除队列头部的元素,并返回移除的原始对象,如果队列为空,则抛出异常

十、Deque接口

 1.定义:Deque<E> 继承了Collection接口中的所有方法,并声明了双端队列的行为,双端队列可以像标准队列先进先出,也可以项堆栈一样后进先出 

2.接口定义常用方法

序号返回值方法作用
1booleanadd(E e)将指定的元素插入双端队列的尾部),如果它是立即可行且不会违反容量限制,插入成功返回 true,如果当前队列已无可用空间,则抛出异常
2voidaddFirst(E e)插入此双端队列的前面,如果它是立即可行且不会违反容量限制,抛出一个指定的元素 IllegalStateException如果当前没有空间可用。
3voidaddLast(E e)在插入如果它是立即可行且不会违反容量限制,抛出此双端队列的末尾指定元素 IllegalStateException如果当前没有空间可用
4booleancontains(Object o)如果此deque包含指定的元素,则返回 true
5Iterator<E>descendingIterator()以相反的顺序返回此deque中的元素的迭代器。
6Eelement()检索但不删除由此deque表示的队列的头部(换句话说,该deque的第一个元素)。
7EgetFirst()检索,但不删除,这个deque的第一个元素
8EgetLast()检索,但不删除,这个deque的最后一个元素
9Iterator<E>iterator()以正确的顺序返回此deque中的元素的迭代器。
10booleanoffer将指定的元素插入由此deque表示的队列(换句话说,在该deque的尾部),如果可以立即执行,而不违反容量限制, true在成功时 false如果当前没有可用空间,则返回false
11booleanofferFirst在此deque的前面插入指定的元素,除非它会违反容量限制
12booleanofferLast在此deque的末尾插入指定的元素,除非它会违反容量限制
13Epeek检索但不删除由此deque表示的队列的头部(换句话说,此deque的第一个元素),如果此deque为空,则返回 null
14EpeekFirst检索,但不删除,此deque的第一个元素,或返回 null如果这个deque是空的
15EpeekLast()检索但不删除此deque的最后一个元素,如果此deque为空,则返回 null
16Epoll()检索并删除由此deque(换句话说,此deque的第一个元素)表示的队列的null如果此deque为空,则返回null
17EpollFirst()检索并删除此deque的第一个元素,如果此deque为空,则返回null`
18EpollLast()检索并删除此deque的最后一个元素,如果此deque为空,则返回null` 。
19Epop()从这个deque表示的堆栈中弹出一个元素。
20voidpush(E e)将元素推送到由此deque表示的堆栈(换句话说,在此deque的头部),如果可以立即执行此操作而不违反容量限制,则抛出 IllegalStateException如果当前没有可用空间)。
21Eremove()检索并删除由此deque表示的队列的头(换句话说,该deque的第一个元素)。
22booleanremove(Object o)从此deque中删除指定元素的第一个出现
23EremoveFirst()检索并删除此deque的第一个元素
24booleanremoveFirstOccurrence(Object o)从此deque中删除指定元素的第一个出现
25EremoveLast()检索并删除此deque的最后一个元素
26booleanremoveLastOccurrence(Object o)从此deque中删除指定元素的最后一次出现
27intsize()返回此deque中的元素数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1094401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

甲醇燃料电池(DMFC) 系统

甲醇燃料电池&#xff08;DMFC&#xff09; 系统框图 ~~

宅在家里也能干的副业,每天挣60—300元,人人可做

想在家搞副业&#xff0c;每天挣60-300元&#xff0c;大家觉得难吗&#xff1f;我告诉你&#xff0c;一点也不难。找对路子&#xff0c;足不出户也能搞钱。今天我就给大家分享一下三个网上靠谱的副业&#xff0c;门槛低上手快&#xff0c;只需一部手机&#xff0c;每天利用碎片…

【Java每日一题】— —第三十一题:银行账号管理程序设计(2023.10.15)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

Elasticsearch系列组件:Kibana无缝集成的数据可视化和探索平台

Elasticsearch 是一个开源的、基于 Lucene 的分布式搜索和分析引擎&#xff0c;设计用于云计算环境中&#xff0c;能够实现实时的、可扩展的搜索、分析和探索全文和结构化数据。它具有高度的可扩展性&#xff0c;可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个…

Java课程设计——图书管理系统

文章目录 一、需求分析二、技术介绍2.1相关技术2.2开发环境 三、功能实现1、登录2、图书管理2.1图书列表2.2添加图书2.3修改图书信息2.4查询图书信息 3、用户管理3.1借阅图书3.2修改借阅信息3.3归还图书 4、退出系统 四、部分代码实现获取源码 文章最下方获取源码&#xff01;&…

【Retinex theory】【图像增强】-笔记

1 前言 retinex 是常见的图像增强的方法&#xff0c;retinex 是由两个单词合成的&#xff1a;retina conrtex &#xff0c;即视网膜皮层。 2 建立的基础 Land 的 retinex theory 建立在三个假设之下&#xff1a; 真实世界是无色的&#xff0c;我们所谓的颜色是光和物质相互…

VARMA模型的原理与实现

文章目录 1.多变量模型的基本思想2.VAR模型与VARMA模型3.VARMA模型的实现 1.多变量模型的基本思想 ​ 在现实和竞赛中&#xff0c;时序数据往往是多变量时间序列&#xff0c;我们往往需要借助除了时间之外的变量的帮助来完成预测。比如&#xff0c;如果我们需要预测居民消费支…

数据结构与算法--其他算法

数据结构与算法--其他算法 1 汉诺塔问题 2 字符串的全部子序列 3 字符串的全排列 4 纸牌问题 5 逆序栈问题 6 数字和字符串转换问题 7 背包问题 8 N皇后问题 暴力递归就是尝试 1&#xff0c;把问题转化为规模缩小了的同类问题的子问题 2&#xff0c;有明确的不需要继续…

yolov5+车辆重识别【附代码】

本篇文章主要是实现的yolov5和reid结合的车辆重识别项目。是在我之前实现的yolov5_reid行人重识别的代码上修改实现的baseline模型。 目录 相关参考资料 数据集说明 环境说明 项目使用说明 vehicle reid训练 yolov5车辆重识别 从视频中获取想要检测的车(待检测车辆) 车…

Attention Is All You Need原理与代码详细解读

文章目录 前言一、Transformer结构的原理1、Transform结构2、位置编码公式3、transformer公式4、FFN结构 二、Encode模块代码解读1、编码数据2、文本Embedding编码3、位置position编码4、Attention编码5、FFN编码 三、Decode模块代码解读1、编码数据2、文本Embedding与位置编码…

centos6/7 SOCKS5 堆溢出漏洞修复(RPM方式)curl 8.4 CVE-2023-38545 CVE-2023-38546

引用 https://darkdark.top/update-curl.html centos6 rpm 升级包下载&#xff1a;https://download.csdn.net/download/sinat_24092079/88425840 yum update libcurl-8.4.0-1.el6.1.x86_64.rpm curl-8.4.0-1.el6.1.x86_64.rpmcentos7 rpm 升级包下载&#xff1a;https://down…

ELF和静态链接:为什么程序无法同时在Linux和Windows下运行?

目录 疑问 编译、链接和装载&#xff1a;拆解程序执行 ELF 格式和链接&#xff1a;理解链接过程 小结 疑问 既然我们的程序最终都被变成了一条条机器码去执行&#xff0c;那为什么同一个程序&#xff0c;在同一台计算机上&#xff0c;在 Linux 下可以运行&#xff0c;而在…

Linux | 关于入门Linux你有必要了解的指令

目录 前言 1、ls指令 2、pwd指令 3、cd指令 4、touch指令 5、stat指令 6、mkdir指令 7、rmdir 与 rm指令 8、man指令 9、cp指令 10、mv指令 11、cat指令 &#xff08;1&#xff09;输入重定向 &#xff08;2&#xff09;输出重定向与追加重定向 12、less指令 1…

多模态模型文本预处理方式

句子级别 句子级别的表征编码一整个句子到一个特征中。如果一个句子有多个短语&#xff0c;提取这些短语丢弃其他的单词。 缺点&#xff1a;这种方式会丢失句子中细粒度的信息。 单词级别 将句子中的类别提取出来&#xff0c;结合成一个句子。 缺点&#xff1a;会在类别之…

【数据结构】线性表的抽象数据类型

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 线性表抽象数据类型(LinearListAbstractDataType&#xff0c;简称 ADT)是一种非常重要的抽象数据类型&#xff0c;它是一种使用抽象的方式表示和实现一组数据元素的集合以及与…

宝塔面板服务器内存使用率高的三招解决方法

卸载多余PHP版本。假若安装了多个PHP版本&#xff0c;甚至把 php 5.3、5.4、7.0、7.3 全都安装上了&#xff0c;就会严重增加系统负载和内存使用率。 安装memcached 缓存组件&#xff0c;建议在宝塔面板后台直接安装。 卸载不常用软件。如&#xff1a;宝塔运维、宝塔一键安装…

php如何查找地图距离

要在PHP中使用高德地图、百度地图或腾讯地图获取位置信息&#xff0c;您可以使用它们的相应API服务。以下是获取位置信息的一般步骤&#xff1a; 思路: 获取API密钥&#xff1a;首先&#xff0c;您需要注册并获取相应地图服务提供商的API密钥。这将允许您访问他们的API以获取位…

CSS的美化(文字、背景) Day02

一、文字控制属性 分为&#xff1a;字体样式属性 、文本样式属性 1.1 CSS字体样式属性 1.color定义元素内文字颜色2.font-size 字号大小3 font-family 字体4 font-weight 字体粗细5.font-style 字体风格6.font 字体综合属性 1.1.1 > 文字颜色 color 属性名: color color …

Yakit工具篇:简介和安装使用

简介(来自官方文档) 基于安全融合的理念&#xff0c;Yaklang.io 团队研发出了安全领域垂直语言Yaklang&#xff0c;对于一些无法原生集成在Yak平台中的产品/工具&#xff0c;利用Yaklang可以重新编写 他们的“高质量替代”。对于一些生态完整且认可度较高的产品&#xff0c;Y…

C# CodeFormer 图像修复

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms;namespace 图像修复 {p…