集合

单列集合 以及双列集合 二十六.集合框架 概念:集合是一个容器,数组也是一个容器,但是呢数组的大小是固定的、类型是唯一的因此在某些需求上有限制 集合特点: 1、容器大小可变 2、可以存储多种数据类型的值【只能是引用数据类型,对基本数据类型而言存储的是其包装类】 3.根据集合的存储方式不同,将集合划分两大类:一类是单列集合,另一类是双列集合 关键词:Collection(单列集合)、Map(双列集合) 一.Collection 单列集合 List集合是有序集合,集合中的元素可以重复,访问集合中的元素可以根据元素的索引来访问 阅读详情

集合

可以存储不同类型的数据

是存储对象数据的容器

集合的长度可以发生变化


Collection  集合的根接口

|-List  有序可重复

|------ArrayList

|------LinkList

|------Vector

|-Set 无序不可重复

|------HashSet

|------LinkHashSet

|------TreeSet


collection常用方法

add(E e)    添加元素之后返回boolean值

		Collection c = new ArrayList();
		c.add("add");

addAll(Collection c)   

		Collection<E> cc = new ArrayList<>();
		cc.add((E) "addAll");
		cc.addAll(c);

clear() remove(Object o)  删除指定元素并返回boolean 值

removeAll(Collection  c)  

		c.removeAll(cc); //删除c集合中与cc的交集元素,也就是重复元素,删除的是c中的元素

retainAll(Collection  c) //保留交集元素
size() // 查看元素的个数
isEmpty() // 是否为空

contains(Object o) // 判断是否存在重复的元素,内部的实现是依赖equals方法

	c.containsAll(c2)//c集合有包含c2集合中的所有元素

containsAll(Collection<?> c) 

toArray() //把集合中的全部元素存储到一个obj 的数组


iterator() //迭代器 返回的是实现类的对象

		Collection c = new ArrayList();
		Iterator it = c.iterator();  //返回一个迭代器   
		// iterator 实际 上返回的是iterator接口的实现类对象。

 boolean hasNext() 如果仍有元素可以迭代,则返回 true。 当前指针指向的位置是否有元素

        public boolean hasNext() {
            return cursor != size;
        }//源码hasNext的实现

		while(it.hasNext()){ // hasNext() 是否有元素可以遍历。
			System.out.println("元素:"+ it.next()); //获取元素
		}

next() 返回迭代的下一个元素。 输出当前的元素,移动指针到下一个元素的位置

 void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。 

		//清空集合 的元素
		while(it.hasNext()){
			it.next();
			it.remove();
		}


List

list继承了collection,有序可重复,进去和出来的顺序一致,先进先出
只有List接口下面的集合类才具有索引值,其他集合类都没有索引值

add(int index, E element) //在指定位置插入指定元素

addAll(int index, Collection<? extends E> c)  //添加另一个集合到本集合的末尾处


get(int index) //根据索引值获取元素

indexOf(Object o) //查找指定元素的索引值

lastIndexOf(Object o) //最后一次出现的位置

subList(int fromIndex, int toIndex)  // 截取指定从fromindex 到toindex 的元素(包头不包含尾)

 

set(int index, E element) // 替换指定索引值得元素

  

listIterator() //父接口是literator

hasPrevious()  //判断是否存在上一个元素。

previous()   // 当前指针先向上移动一个单位,然后再取出当前指针指向的元素。

next(); // 先取出当前指针指向的元素,然后指针向下移动一个单位。

add //插入到当前指针的位置

set// 替代迭代器最后一次返回的元素

在迭代器迭代元素 的过程中,不允许使用集合对象改变集合中的元素个数,

如果需要添加或者删除只能使用迭代器的方法进行操作。

如果使用过了集合对象改变集合中元素个数那么就会出现ConcurrentModificationException异常。

ArrayLIst

内部实现的是object数组
初始长度为10
ArrayList 底层是维护了一个Object数组实现 的, 特点: 查询速度快,增删慢。

LinkList

hasPrevious()  判断是否存在上一个元素。
previous()    当前指针先向上移动一个单位,然后再取出当前指针指向的元素。

next();  先取出当前指针指向的元素,然后指针向下移动一个单位。
 
add(E e)   把当前有元素插入到当前指针指向的位置上。
set(E e)   替换迭代器最后一次返回的元素。
LinkedList底层是使用了链表数据结构实现的,  特点: 查询速度慢,增删快。 

Vector

维护了一个Object的数组实现的,实现与ArrayList 一样 ,但是Vector是线程安全的,操作效率低。

HashSet

是用一个哈希表来实现的,存取速度快
在判断是否添加相同元素时,不仅要重写hashcode方法还要重写equals方法

TreeSet

是基于二叉树实现
基于元素的自然书顺序排序
如果元素不具备自然顺序则需要继承comparable接口重写comparto方法
compareTo方法返回 的是0,那么该元素就被视为重复元素,不允许添加.
一般都自己写Comparator比较器,在创建treeset对象时传入比较器
class  类名  implements Comparator{
 			
 			}

Collections

工具类
Collections.binarySearch(list, key)  // 二分法查找
Collections.sort(list);// 排序
// Collections.reverse(list);反转元素



MyBatis 集合、集合嵌套查询 集合 &lt;collection property="posts" ofType="domain.blog.Post"&gt; &lt;id property="id" column="post_id"/&gt; &lt;result property="subject" column="post_subject"/&gt; 阅读详情

相关推荐

Python办公自动化:用python-docx打造专业级Word表格边框(附完整代码)

本文深入探讨了如何利用python-docx库精细控制Word表格边框,实现办公自动化。通过解析底层XML结构,提供了通用的`set_cell_border`函数,并附上完整代码,帮助用户轻松打造符合商业规范的专业级表格,提升报告、合同等文档的生成效率与视觉效果。

weixin_29089057的博客 546

Java集合 之 单列集合

java的单列集合,看这一篇就够了

qq_73698057的博客 3098

【分子指纹】化学分子指纹的概念和应用(非常重要)

分子指纹(Molecular fingerprints)可以低计算成本的方式表示大规模化学数据集中化合物的化学(结构、物理化学等)性质。它们在将化学数据集中的分子转换为适合于计算方法的一致输入格式(bit向量或数值)方面发挥着重要作用。在这篇综述中,

DJJ5210的博客 1万+

集合 —— 集合与集合运算

【概述】 集合,是集合论中主要研究对象,是指具有某种特定性质的具体的或抽象的对象汇总而成的集体,其中,构成集合的这些对象则称为该集合的元素。 集合中元素的数目称为集合的基数,集合 A 的基数记作:card(A),当其为有限大时,集合 A 称为有限集,反之则为无限集,简单来说,含有有限个元素的集合叫做有限集,含无限个元素的集合叫做无限集。 一个集合具有三个特性:确定性、互异性、无序性。其中,确...

Alex_McAvoy的博客 7582

G2O (General Graph Optimization)入门及简单使用

g2o全称是General Graph Optimization,也就是图优化,我们在做SLAM后端或者更加常见的任何优化问题(曲线拟合)都可以使用G2O进行处理。

晓晨的博客 1万+

如何设计一个低代码平台

近些年来,低代码发展火热,各种低代码平台如雨后春笋纷纷崛起,这些平台各定位不同,优劣不同,用户的选择空间很大。那么,如果用户想从零开始设计一个低代码平台,该如何做呢?

Jarod_Chou的博客 8258

【集合论】集合概念与关系 ( 集合表示 | 数集合 | 集合关系 | 包含 | 相等 | 集合关系性质 )

一、 集合论体系 、 二、 集合表示 、 三、 数集合 、 三、 集合关系 、 1、 包含关系 、 2、 相等关系 、 3、 集合间包含关系性质

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1万+

【仿真】Carla Python API实战:从零搭建自动驾驶测试环境

本文详细介绍了如何使用Carla Python API从零搭建自动驾驶测试环境。通过Carla仿真平台,开发者可以构建高度逼真的城市环境和车辆物理模型,利用Python API实现传感器配置、数据采集、场景构建及自动驾驶算法集成。文章还分享了实际项目中的调试技巧和性能优化经验,帮助读者快速掌握自动驾驶仿真测试的核心技术。

weixin_29050513的博客 213

集合框架——Map集合

Map集合概述interface Map<K,V> K:键的类型;V:值的类型Map集合的特点双列集合,一个键对应一个值键不可以重复,值可以重复Map集合的基本使用//创建集合对象​//V put(K key, V value) 将指定的值与该映射中的指定键相关联map.put("wedu001","林青霞");map.put("wedu002","张曼玉");map.put("wedu003","王祖贤");map.put("wedu003","柳岩");​。

weixin_64681117的博客 2469

node-red 可视化探索

配置socket选择配置流程产生url。

weixin_44133581的博客 3413

超十万字解读Spring AI实战:开篇

大模型技术正以惊人的速度改变世界,2025年的人工智能已不再是科幻,而是现实。大模型如ChatGPT等,正在重塑各行各业,降低技术门槛,使专业能力普及化。SpringAI的出现为Java开发者提供了桥梁,使其能在企业级系统中稳定运行AI,同时保持工程化思维。尽管SpringAI在生态、学习成本和性能上存在不足,但其企业级基因和国产化适配能力使其成为Java开发者的重要工具。本系列文章旨在介绍SpringAI的功能与特性,鼓励更多Java开发者参与AI实践,共同探索AI时代的无限可能。

liaokailin的专栏 1577

集合论_集合代数

文章目录集合代数解决问题创建过程组成部分基本概念集合定义集合表示集合基数集合关系空集全集相等关系包含关系子集和真子集证明集合相等n 元集的子集幂集定理集合运算集合运算定律可数集合与不可数集合等式可数集合不可数集合 集合代数 解决问题 ​ 在现代数学中,集合论是数学的基础,数学是其它学科的基础,集合论成为了基础的基础,可见其重要性 ​ 在离散数学中,我们需要用集合表达各类离散量和离散量之间的关系 创...

nmgyangguangyuan的博客 5098

详解账务核心,从入门到精通

本文系统阐述了账务体系的设计原理与实现方法,围绕支付交易的基础设施——账务系统展开深入探讨。文章首先从账务实现原理出发,强调从客户场景中抽象能力的重要性,详细解析了账务总架构及其与外围系统的协同关系。随后重点剖析了账户子系统的设计,包括账户生态、主体管理、结构设计等核心要素,并针对热点账户问题提出了多种创新解决方案。此外,文章还深入探讨了会计日切原理、营销类账务处理等专业领域,最后以支付机构场景为例,全面解析了清结算业务的账务实现模型。全文通过理论结合实践的方式,为构建高效、可靠的账务系统提供了系统性的方法

银行信息系统应用架构详解 531

各种集合的集合

文章目录数组千千万,集合是真理数组与集合的扩容集合的分类 数组千千万,集合是真理   我们在代码中常见的数据保存形式一般就是两种—>数组与集合;数组和集合的最大的区别在于查询和扩展,一般情况下,在数据确定的情况下,我们采用数组的形式会更便于我们查询,而在数据长度不确定的情况下,我相对更推荐集合。 数组与集合的扩容   数组的扩容 我们都知道的是数组在一旦确定下来的时候我们是无法对数组的长度进行改变的,所以对数组进行扩容就只能通过创建一个新的更长的数组来将原来的数组长度给复制过去才可以。这一段我在数组

qq_43325476的博客 1077

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Java里的集合:单列集合+双列集合

集合的一些知识点总结,适合复习

weixin_60470460的博客 1915

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

单列集合 双列集合

扩容: 当数组中元素的个数>threshold 进行扩容 扩容为原来的2倍, loadFactor 加载因子 0.75 ,threshold = 数组的长度*loadFactor=16*0.75 =12 第一次长度为16的数组所指定的值threshold 也扩容为原来的2倍。jdk8:在创建集合的时候 创建长度为0的数组 赋值给elementData,在第一次添加元素的时,将新产生的长度为10的数组赋值给elementData,当添加的元素超过数组的长度时,进行扩容为原来的1.5倍。

2402_83268176的博客 1856

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【数学分析】集合 ① ( 集合概念 | 集合表示 | 常用的数集合 | 集合的表示 )

一、集合概念、 二、集合表示、 三、常用的数集合、 四、集合的表示

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1万+

集合论知识总结——集合及其运算

集合论知识总结

m0_62249876的博客 9536

Java集合类--List集合,Set集合,Map集合

集合类类似于数组,与数组不同的是,数组的长度是固定的,集合的长度是可变的;数组用来存放基本类型数据,集合用来存放对象的引用。

qq_40132294的博客 3346

Java【集合】

Java的特殊数据容器——集合

在下的博客 1878

python集合输出_Python之集合

集合:无序的,不可随机访问的,不可重复的元素集合# 可以使用大括号 { } 或者 set() 函数创建集合,# 注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。# 集合可分为可变集合和不可变集合# 可变集合:有增、删、改的操作 set# 不可变集合:创建好以后,无法进行增、删、改的操作 frozenset# 可变集合定义1 s = {1, 2, 3}2...

weixin_39996762的博客 4989

Java集合进阶——单列集合

数组+链表+红黑树⑴引用构造方法时,方法底层会创建一个默认长度为16,加载因子为0.75的数组⑵添加元素时,方法会根据元素的哈希值跟数组的长度计算出应存入的位置⑶判断当前位置是否有元素如果没有元素则直接存入;如果有元素则会通过equals方法比较元素属性值是否一样,一样的话表示元素重复,不存;不一样的话存入数组,形成链表细节:当链表长度超过8且数组长度大于等于64时,链表会自动转换为红黑树,从而提高查找效率LinkedHashSet是HashSet的子类,其完全继承了父类中的方法。

m0_74808313的博客 1317

集合 集合运算

文章目录集合(set)集合的创建集合的修改add()update()pop()remove()集合的运算交集运算差集运算并集运算异或集运算子集,真子集,超集,真超集 集合(set) 集合中的元素是无序的 集合中不能出现重复的元素 集合只能存储不可变序列 集合的创建 集合和字典相同都用{},但是集合没有键,只有元素值 集合中存贮列表会报错,因为只能存贮不可变序列,而列表是可变的 直接创建: se = {1,2,3,4} print(se,type(se)) {1, 2, 3, 4} <class

xdc1812547560的博客 6188

python集合、集合的创建、集合的添加和删除

集合的操作: 集合是一个无序的,不重复的数据组合,他的主要作用如下: 去重,把一个列表变成集合,就自己去重了 关系测试,测试两组数据之前的交集、差集、并集等关系 交集: 差集: 父集 超集: 集合的创建(无序,不重复): 集合对象是一组无序排列的可哈希的值:集合成员可以做字典的键 集合分类:可变集合、不可变集合 可变集合(set):可添加和删除元素,非可哈希的,不能用作字典的键,也 不能...

weixin_45819515的博客 2548

Collection集合,List集合,set集合,Map集合,Stream流

学习java常用集合以及Stream流

xrkhy的博客 1541
上一篇: 设计模式六大设计原则
下一篇: Linux 目录说明
go_sparrow
博客等级 码龄11年 25粉丝 257原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值