java集合

java集合

集合

集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。

什么是集合框架?

集合框架是不同数据结构的容器类在不断向上抽取的过程中所构成的一套容器体系,这些容器满足了在不同需求下数据存储的不同特性。

数组也能装多个元素,为什么还要使用集合框架?

由于数组长度和类型是固定的,所以光使用数组已经很难满足实际开发需求了,我们存储多个数据的容器往往是容积可变的,有时候存储的对象类型也会不同

2.知识剖析

集合框架

Java集合框架中常用的集合类有哪些?

1.List接口下:ArrayList,LinkedList

2.Set接口下:HashSet、TreeSet

3、Map接口下:HashMap、TreeMap

集合框架顶层(根)接口:Collection

collection是集合框架的顶层接口,集成了一些集合的共性方法;添加、删除、修改、查询、判断等

1.添加:boolean add(Object obj):添加元素;booleanaddAll(Collectioncoll):添加给定集合到当前集合

2.删除:boolean remove(object obj):删除元素;void clear();清空集合

3.判断:boolean contains(object obj):是否包含指定元素;booleanisEmpty():判断集合中是否有元素。

4.获取:int size():获取元素个数;Iterator iterator():取出元素的方式:迭代器。

5.其他:Object[] toArray():将集合转成数组。

根接口下的子接口及实现类

List(列表)接口:有序,元素都有索引(角标),元素可以重复

1、ArrayList:基于数组实现(长度可变),不同步,针对性查改的速度快

2、Vector:和ArrayList基本相同,但是是同步的,现已被弃用

3、LinkedList:基于双向链表实现,不同步,随机增删的速度很快

Set接口,无序,元素不可重复

1、HashSet:基于哈希表实现,不同步

2、TreeSet:基于二叉树实现,不同步,自然排序,定制排序

Map(成对元素)接口,key唯一,value随意

1、HashMap:哈希表结构;Key唯一;不同步;允许null作为键,值。hashCode()、equals()确定唯一

2、TreeMap:二叉树结构;Key唯一;可排序;不同步但高效;允许null作为键,null作为值。

3.常见问题

1、每个容器实现类的数据结构都有区别,为什么他们都能调用iterator()方法拿到属于自己的迭代器对象?

2、Set集合如何保证对象的唯一性

3、开发中通常都有这样一个共识,使用到Map集合的时候,如果没有对元素进行排序的需求,使用HashMap?

4.解决方案

1、因为Collection接口下所有实现类的内部类都实现了Iterator接口,并返回实现后的迭代器对象

2、在加入元素时,先用hash算法算出元素的hashCode,如果hashCode值不同,再调用元素的equals方法比较容器中是否有相同元素,如果返回false,则表明没有重复元素,将该元素的hashCode存入哈希表(数组结构)对应位置中,如果返回true,就不会存入该元素;如果出现hashCode值相同,equals返回false的情况,会发生hash冲突,集合的性能会降低。

3、使用hash表可以在知道key的情况下快速定位到对象的具体位置,查询的效率比数组更高。

5.编码实战

6.扩展思考

7.参考文献

https://blog.youkuaiyun.com/qiuych3/article/details/51334753

8.更多讨论

今天的分享就到这里啦,欢迎大家提问和探讨!

q:set集合为什么要复写hashcode和equals

a:set集合语速是不重复的,判断元素重复发,需要对比hashcode和equals。

q:集合和数组转换

a:java封装对数组和ArryList的相互转换api

q:集合map一些使用场景

a:map是键值对,可以根据键来查询对应值,遍历map使用iterator。

在当今计算机视觉领域,深度学习模型在图像分割任务中发挥着关键作用,其中 UNet 是一种在医学影像分析、遥感图像处理等领域广泛应用的经典架构。然而,面对复杂结构和多尺度特征的图像,UNet 的性能存在局限性。因此,Nested UNet(也称 UNet++)应运而生,它通过改进 UNet 的结构,增强了特征融合能力,提升了复杂图像的分割效果。 UNet 是 Ronneberger 等人在 2015 年提出的一种卷积神经网络,主要用于生物医学图像分割。它采用对称的编码器 - 解码器结构,编码器负责提取图像特征,解码器则将特征映射回原始空间,生成像素级预测结果。其跳跃连接设计能够有效传递低层次的细节信息,从而提高分割精度。 尽管 UNet 在许多场景中表现出色,但在处理复杂结构和多尺度特征的图像时,性能会有所下降。Nested UNet 通过引入更深层次的特征融合来解决这一问题。它在不同尺度上建立了密集的连接路径,增强了特征的传递与融合。这种“嵌套”结构不仅保持了较高分辨率,还增加了特征学习的深度,使模型能够更好地捕获不同层次的特征,从而显著提升了复杂结构的分割效果。 模型结构:在 PyTorch 中,可以使用 nn.Module 构建 Nested UNet 的网络结构。编码器部分包含多个卷积层和池化层,并通过跳跃连接传递信息;解码器部分则包含上采样层和卷积层,并与编码器的跳跃连接融合。每个阶段的连接路径需要精心设计,以确保不同尺度信息的有效融合。 编码器 - 解码器连接:Nested UNet 的核心在于多层次的连接。通过在解码器中引入“skip connection blocks”,将编码器的输出与解码器的输入相结合,形成一个密集的连接网络,从而实现特征的深度融合。 训练与优化:训练 Nested UNet 时,需要选择合适的损失函数和优化器。对于图像分割任务,常用的损失
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值