coco数据集目标检测论文_一文了解目标检测/图像分割/coco数据集检测评价标准...
前言
目标检测(Intance Detection) 和图像分割(Image Segmantation) 算是深度学习中两个个比较热门的项目了,单级式检测(YOLO、SSD)和双级式检测(Fast R-Cnn)代表了如今大多数的目标检测方法,而FCN、U-net、Deeplab则引领了图像分割的潮流,为此,我们也应该知道如果去评价我们的检测准确度:
(在Mask R-Cnn论文中精度展示figure)
在目标检测的论文中,我们经常见到AP或者AR,这两个指标究竟代表什么?还有平时我们所说的Accuracy和Precision又代表什么?
那么这些标准究竟代表什么,有什么意义,光看上面的表可能是看不明白的,而网络中的评价标准大多解释的比较杂乱,为了方便之后的查阅,特地在此整理归纳,保证你看了就明白到底是个怎么样的评价标准,如有错误,欢迎拍砖~
评价标准
AP代表的是"Average Precision",代表平均精度,而AR代表的是"Average Recall",表示平均召回率。在coco数据集的官网中有对此的简单评价标准介绍:
IOU(Intersection-Over-Union)
IOU即Intersection-Over-Union,IoU相当于两个区域重叠的部分除以两个区域的集合部分得出的结果,具体的可以在之前的这篇文章中了解到,这里就不赘述了。
目标检测和图像分割使用的IOU方法都是一样的,不同的是目标检测面向判断选定框和预测框;而图像分割面向的是选定掩码和预测掩码。
在目标检测中,检测目标用box进行评价。我们的IOU评价方式为(将预测框和选定框放入公式中去判定):
而在图像分割中,我们用掩码来进行评价,IOU评价方式为(将预测掩码和选定掩码放入公式汇中去判定):
因为我们识别或者分割图像一般都有好几个类别,所以我们把每个分类得出的分数进行平均一下就可以得到mean IoU,也就是mIoU。
Pixel Accuracy
上面所述的IoU只是用于评价一幅图的标准,如果我们要评价一套算法,并不能只从一张图片的标准中得出结论。一般对于一个数据集、或者一个模型来说。评价的标准通常来说遍历所有图像中各种类型、各种大小(size)还有标准中设定阈值.论文中得出的结论数据,就是从这些规则中得出的。
在进行评价标准前,我们首先了解一下基本概念:
Precision(准确率):表示符合要求的正确识别物体的个数占总识别出的物体个数的百分数
Recall(召回率):表示符合要求正确识别物体的个数占测试集中物体的总个数的百分数
FP:false positive(误报),即预测错误(算法预测出一个不存在的物体)
FN:false negative(漏报),即没有预测到(算法没有在物体规定范围内预测出该物体)
TP: true positive(正确),既预测正确(算法在物体规定范围内预测出了该物体)
TN: true negative,算法预测出了此处是背景,也就是说此处没有任何物体,当然也没有mask。
如下图,我们设定阈值为0.5,也就是说,只要IoU得分大于0.5我们就算成功预测到物体,而低于改该分数我们就规定为没有预测到物体。
那么什么是准确度(accuracy,ACC)?注意准确度和精确度(precision)是两码事,两者不可混为一谈,评价标准中,Pixel Accuracy表示检测物体的准确度,重点判断标准为是否检测到了物体,而Pixel Precision则代表检测到所有的物体中覆盖的精确度,重点判断mask是否精确地覆盖到了该物体。
而下方的公式是准确度公式,注意公式中的被除数和除数,TP代表检测出来并且正确的目标,而TN代表正确识别的背景(一般我们将背景也分为一类)。
accuracy=TP+TNTP+TN+FP+FNaccuracy = \frac{{TP + TN}}{{TP + TN + FP + FN}}accuracy=TP+TN+FP+FNTP+TN
Pixel Precision
而像素精度则是在已经检测到的基础上(不论检测是否失误)进行评测的标准:
Precision=TP(t)TP(t)+FP(t)Precision = \frac{{TP\left( t \right)}}{{TP\left( t \right) + FP\left( t \right)}}Precision=TP(t)+FP(t)TP(t)
其中,ttt代表阈值,也就是最开始的AP50AP_{50}AP50和AP75AP_{75}AP75分别代表阈值是0.5和0.75。
上面是coco的评价标准,表示在所有检测出来的目标有多大的比率是正确的。而有些任务因为侧重不同所以公式也稍有变化。比如下面的公式,加入了FN,没有检测出来的实际物体也进行了计算。
Precision=TP(t)TP(t)+FP(t)+FN(t)Precision = \frac{{TP\left( t \right)}}{{TP\left( t \right) + FP\left( t \right) + FN\left( t \right)}}Precision=TP(t)+FP(t)+FN(t)TP(t)
不论哪种方式,我们评价的时候尽可能顾全所有的阈值,所以一般使用的公式为:
1∣thresholds∣∑tTP(t)TP(t)+FP(t)\frac{1}{{\left| {thresholds} \right|}}\sum\limits_t {\frac{{TP\left( t \right)}}{{TP\left( t \right) + FP\left( t \right) }}}∣thresholds∣1t∑TP(t)+FP(t)TP(t)
这个时候,thresholdthresholdthreshold的取值范围一般是0.5:0.05:0.950.5:0.05:0.950.5:0.05:0.95。也就是最开始coco标准中注明的情况。
也就是说,当阈值(Threshold)越高,评价标准就越严格,我们检测目标的IoU值必须足够高才能满足要求。
对于多分类的检测,只需要在公式最前面加上类别即可:
1∣classes∣∑c(1∣thresholds∣∑tTP(t)TP(t)+FP(t))\frac{1}{{\left| {classes} \right|}}\sum\limits_c {\left( {\frac{1}{{\left| {thresholds} \right|}}\sum\limits_t {\frac{{TP\left( t \right)}}{{TP\left( t \right) + FP\left( t \right) }}} } \right)}∣classes∣1c∑(∣thresholds∣1t∑TP(t)+FP(t)TP(t))
上面就是AP的基本公式,而AR的公式则如下:
1∣classes∣∑c(1∣thresholds∣∑tTP(t)TP(t)+FN(t))\frac{1}{{\left| {classes} \right|}}\sum\limits_c {\left( {\frac{1}{{\left| {thresholds} \right|}}\sum\limits_t {\frac{{TP\left( t \right)}}{{TP\left( t \right) + FN\left( t \right)}}} } \right)}∣classes∣1c∑(∣thresholds∣1t∑TP(t)+FN(t)TP(t))
召回率更强调是否能否检测到物体而不是检测到正确的物体。一般准确率和召回率不可能都很高,一方高另一方则会稍微低一些,如何trade-off这两个指标是目标检测和图像分割中经常考虑的问题。
参考文档:
相关文章
- Java飞扬的小鸟游戏
游戏背景 这款游戏的起源是越南独立开发者开发的手机游戏,短时间竟占领了全球各大AppStore免费排行榜首位。游戏中,玩家控制一只小鸟飞过一个个柱子的间隙。飞得越远分数越高,看玩家能使小鸟在空中坚持多久。初始界面如图-1所示。 玩…...
2023/3/28 15:57:57 - Java入门第105课——使Date表示的日期与Calendar表示的日期进行互换
网上那么多java的文章,为什么要看我的? 系统全面:网上文章东一篇西一篇,自己都看晕了吧。就跟着我这个路线学,学不会你找我。 码字不易,请大家关注公众号,转发,点赞,只需动动手指,还送视频,只为成就你! 问题 在上一案例的基础上,使Date表示的日期与Calendar表示的…...
2023/3/28 15:57:55 - 一个50岁大叔学编程的真实故事——任何时候学习都不晚
一个50岁大叔学习编程的真实故事 50岁大叔,半截身子入土的人了,现在想转行,出去还能做什么? 学编程。 什么??? 这人有毛病吧。。 我心里也是这样想的,当时我正在教室里给学生讲课…...
2023/3/28 15:57:54 - ionic4 清除上一级页面
navNext(page){this.navCtrl.navigateForward([page], {replaceUrl: true,animated: false});} 例如:navNext("about") 进入about页面,清除上一级页面。...
2023/3/28 15:57:52 - ionic4 图片选择
使用html自带图片上传功能,并转为base64 <img src"{{res}}" class"im2" /><input type"file" accept"image/*" class"in1" id"m_feedback_bg" onchange"mpreviewFile(event)" /&g…...
2023/3/28 15:57:51 - ionic4 修改公众号标题
setBrowsTitle(title) {//修改浏览器的标题var body document.getElementsByTagName("body")[0];document.title title;var iframe document.createElement("iframe");iframe.setAttribute("src", "assets/shapes.svg");iframe.set…...
2023/3/28 15:57:50 - ionic4 输入框错乱
这个问题不好描述,简单说下。 步骤 ios系统,当输入框获取焦点后,弹出键盘把输入框顶上去,点击完成后又恢复。 影响 1.此时再点输入框,很有可能点击无法应 2.点击某个按钮,结果响应的是另一个按钮 总之…...
2023/3/28 15:57:49 - 小程序要点归档
多个真实项目开发经验,帮助你们少走弯路。 1.欢迎页 https://blog.csdn.net/houjunkang363/article/details/105576387 2.全局分享配置 https://blog.csdn.net/houjunkang363/article/details/105576504 3.不同机型适配 https://blog.csdn.net/houjunkang363/…...
2023/3/28 15:57:48 - 小程序欢迎页
app.json里pages数组下的第一项即是小程序启动的第一个页面。 例如:我的欢迎页,在onShow里判断是进入首页还是登录页,wxml放一张图片就行。 wx.login({success: res > {// 发送 res.code 到后台换取 openId, sessionKey, unionIdconst pat…...
2023/3/28 15:57:47 - 小程序全局分享配置
默认当前是哪个页面,分享点进来就是哪个页面,这样有问题,点进来应该进入欢迎页,即等同于重新进入小程序。 每个页面的onShareAppMessage可以进行配置,但都是重复代码没必要每个页面都写。 在app.js里的onLaunch加入以…...
2023/3/28 15:57:46 - 小程序不同机型适配
用rpx!!! 不管是字体大小、边距、宽高等,单位一定要用rpx,它可以帮助你在不同机型下做到完美适配,用px的话你就等着哭吧。 亲测各个机型rpx会完美适配。 .val-btn {color: #11a7fe;border-width: 1rpx;border-style: solid;border-color: …...
2023/3/28 15:57:45 - 小程序三级页面回到一级页面
A->B->C,C如何回到A?且A作为根页面 思路:在C页面监听返回,调用reLaunch回到A。可能不止B能跳转到C,D也可能跳转到C,所以要判断只有B->C,从C返回才执行reLaunch到A。 B页面代码: wx.setStorageSync(getApp(…...
2023/3/28 15:57:44 - 小程序wxml管道
用过Angular的都知道管道的概念。 管道就是数据的转变,例如某个选项的value是A,对应文本显示为车票预订,如何在wxml页面上将A转化为车票预订? 一、新建wxs文件 function cgAnpai(str) {if(!str||str.length0){return ;}return …...
2023/3/28 15:57:43 - 小程序Tab选项卡
Tab选项卡下拉刷新、上拉加载更多数据空白页面显示滑动时,当页面无数据时才会触发刷新 网上小程序Tab选项卡的文章有很多,可都无法实现加载更多,因为swpier会使其失效。 删代码好累,自行看关键代码吧。 wxml代码 <view class&…...
2023/3/28 15:57:42 - 小程序textarea在IOS有默认padding
在开发工具和android都正常,在IOS真机上就会有个默认padding,大概10rpx长度。 而且这个默认padding根本不知道在哪里设置的,代码看不到。 设置为padding:0也不生效,设置为padding:10rpx就生效了。。。 也就是padding除了0不生效…...
2023/3/28 15:57:41 - 小程序动态class
wxml代码: <view class"{{isCountingDown?val-btn-counting:val-btn}}"></view> js代码: data: {isCountingDown: false} isCountingDown为true时,classval-btn-counting。 isCountingDown为false时,…...
2023/3/28 15:57:40 - 小程序二维码生成并保存相册
二维码生成并长按保存到系统相册,直接上代码。 wxml代码: <canvas canvas-idcanvas bindlongtapsave></canvas> js代码: // pages/admin-qrcode/admin-qrcode.js var QRCode require(../../utils/weapp-qrcode.js) var qrco…...
2023/3/28 15:57:38 - 小程序省市区选择
小程序有自带省市区选择控件,非常方便,mode"region"即可 wxml代码: <picker mode"region" bindchange"bindRegionChange" value"{{region}}" ><view class"choose-item">&l…...
2023/3/28 15:57:37 - 小程序身份证上传
效果自认很美,js逻辑不难,主要是各种状态的控制,重点在于页面代码。 下面是身份证正面的代码,反面代码类似。 wxml代码: <view class"row"><view class"delete {{zhengShow?show:hidden}}…...
2023/3/28 15:57:36 - 小程序请求超时
网上搜的全是只要fail,就toast请求超时,这种完全不符合我们的要求。 只有确实是超时了,才能toast请求超时。 排名前5的文章都是这样,看不下去了,无奈只能自己研究。 app.json可以设置超时时间,默认为60秒…...
2023/3/28 15:57:35 - 奇葩之想让我帮写代码还要白嫖
每天都有各种各样的人咨询我 有搞笑的,有奇葩的,也有真诚的。 今天特来记录一下,以前没记录可惜了。 准备记录成一个奇葩说 今天这位老哥刚工作,想让我远程帮他写代码以稳定他的工作,极低的价格,还想先…...
2023/3/28 15:57:34 - 7年厨师想转行程序员
7年厨师想转行,跟我学java。 可是工资只有7千我惊呆了,我还以为7年厨师工资至少1万多呢。 看来每个行业都有工资高也有工资低的,他可能属于厨师里工资低的吧...
2023/3/28 15:57:33 - 30岁小学毕业电工转java
通过我的博客慕名而来 说明天用花呗交学费,看来生活较窘迫 到了第二天,也不废话,直接交学费。是一个小学毕业的电工,想做java,工资高一点 发了一个测试题,他5分钟做完了,错误很多。 大家觉得小…...
2023/3/28 15:57:32 - Java入门第106课——测试集合持有对象
问题 测试集合持有对象,详细要求如下: 1)使用ArrayList构造集合对象cells。 2)构造行和列为(1,2)的Cell对象,将其放入集合cells中。 3)构造行和列为(2,3)的Cell类的对象cell,将其放入集合cells中。 4)输出cell对象和cells对象。 5)将cell对象下落一个格子。…...
2023/3/28 15:57:31 - Java入门第107课——使用add方法向集合中添加元素
问题 使用add方法向集合中添加元素,详细要求如下: 1)使用ArrayList构造集合对象c,并输出该对象。 2)将字符串“a”、"b"、“c”放入集合c中,再次输出集合对象。 方案 首先,使用ArrayList构造集合对象c,代码如下所示: Collection<String> c = ne…...
2023/3/28 15:57:30 - Java入门第108课——使用contains方法判断集合中是否包含某元素
问题 判断某集合中是否包含某元素,详细要求如下: 1)使用ArrayList构建集合对象cells,使用行和列为(1,2)、(1,3)、(2,3)、(2,3)构建四个Cell类的对象,并将这四个对象放入集合cells中。 2)使用行和列为(1,3)构建Cell类的对象cell。 3)比较cell对象在集合cel…...
2023/3/28 15:57:27 - Java入门第109课——集合的size、clear、isEmpty用法
问题 测试Collection接口中size方法、clear方法、isEmpty方法的用法,详细要求如下: 1)使用HashSet构建集合c,并判断当前集合是否为空。 2)将字符串“java”、“cpp”、“php”、"c#"、"objective-c"放入集合c中,并判断集合c是否为空以及集合c中元…...
2023/3/28 15:57:25 - Java入门第110课——JavaAPI上卷
课程图 1. 集合框架 1.1 Collection 1.1.1 【Collection】addAll、containsAll 1.2 Iterator 1.2.1 【Iterator】hasNext、next方法 1.2.2 【Iterator】remove方法...
2023/3/28 15:57:24 - Java入门第111课——集合addAll、containsAll的用法
问题 测试Collection接口中addAll方法、containsAll方法的用法,详细要求如下: 1)使用ArrayList构建集合c1,将字符串“java”、“cpp”、“php”、“c#”、“objective-c”放入集合c1中,并输出集合c1。 2)使用HashSet构建集合c2,将集合c1中的元素添加到集合c2,并输出…...
2023/3/28 15:57:23 - Java入门第112课——使用Iterator的hasNext方法、next方法遍历集合
问题 使用Iterator的hasNext方法、next方法遍历集合,详细要求如下: 1)使用HashSet构建集合c,将字符串"java"、"cpp"、"php"、"c#"、"objective-c"放入集合c中。 2)遍历集合中的每一个元素,并输出。 方案 1)首先…...
2023/3/28 15:57:22
最新文章
- Java飞扬的小鸟游戏
游戏背景 这款游戏的起源是越南独立开发者开发的手机游戏,短时间竟占领了全球各大AppStore免费排行榜首位。游戏中,玩家控制一只小鸟飞过一个个柱子的间隙。飞得越远分数越高,看玩家能使小鸟在空中坚持多久。初始界面如图-1所示。 玩…...
2023/3/28 15:57:57 - Java入门第105课——使Date表示的日期与Calendar表示的日期进行互换
网上那么多java的文章,为什么要看我的? 系统全面:网上文章东一篇西一篇,自己都看晕了吧。就跟着我这个路线学,学不会你找我。 码字不易,请大家关注公众号,转发,点赞,只需动动手指,还送视频,只为成就你! 问题 在上一案例的基础上,使Date表示的日期与Calendar表示的…...
2023/3/28 15:57:55 - 一个50岁大叔学编程的真实故事——任何时候学习都不晚
一个50岁大叔学习编程的真实故事 50岁大叔,半截身子入土的人了,现在想转行,出去还能做什么? 学编程。 什么??? 这人有毛病吧。。 我心里也是这样想的,当时我正在教室里给学生讲课…...
2023/3/28 15:57:54 - ionic4 清除上一级页面
navNext(page){this.navCtrl.navigateForward([page], {replaceUrl: true,animated: false});} 例如:navNext("about") 进入about页面,清除上一级页面。...
2023/3/28 15:57:52 - ionic4 图片选择
使用html自带图片上传功能,并转为base64 <img src"{{res}}" class"im2" /><input type"file" accept"image/*" class"in1" id"m_feedback_bg" onchange"mpreviewFile(event)" /&g…...
2023/3/28 15:57:51 - ionic4 修改公众号标题
setBrowsTitle(title) {//修改浏览器的标题var body document.getElementsByTagName("body")[0];document.title title;var iframe document.createElement("iframe");iframe.setAttribute("src", "assets/shapes.svg");iframe.set…...
2023/3/28 15:57:50 - ionic4 输入框错乱
这个问题不好描述,简单说下。 步骤 ios系统,当输入框获取焦点后,弹出键盘把输入框顶上去,点击完成后又恢复。 影响 1.此时再点输入框,很有可能点击无法应 2.点击某个按钮,结果响应的是另一个按钮 总之…...
2023/3/28 15:57:49 - 小程序要点归档
多个真实项目开发经验,帮助你们少走弯路。 1.欢迎页 https://blog.csdn.net/houjunkang363/article/details/105576387 2.全局分享配置 https://blog.csdn.net/houjunkang363/article/details/105576504 3.不同机型适配 https://blog.csdn.net/houjunkang363/…...
2023/3/28 15:57:48 - 小程序欢迎页
app.json里pages数组下的第一项即是小程序启动的第一个页面。 例如:我的欢迎页,在onShow里判断是进入首页还是登录页,wxml放一张图片就行。 wx.login({success: res > {// 发送 res.code 到后台换取 openId, sessionKey, unionIdconst pat…...
2023/3/28 15:57:47 - 小程序全局分享配置
默认当前是哪个页面,分享点进来就是哪个页面,这样有问题,点进来应该进入欢迎页,即等同于重新进入小程序。 每个页面的onShareAppMessage可以进行配置,但都是重复代码没必要每个页面都写。 在app.js里的onLaunch加入以…...
2023/3/28 15:57:46 - 小程序不同机型适配
用rpx!!! 不管是字体大小、边距、宽高等,单位一定要用rpx,它可以帮助你在不同机型下做到完美适配,用px的话你就等着哭吧。 亲测各个机型rpx会完美适配。 .val-btn {color: #11a7fe;border-width: 1rpx;border-style: solid;border-color: …...
2023/3/28 15:57:45 - 小程序三级页面回到一级页面
A->B->C,C如何回到A?且A作为根页面 思路:在C页面监听返回,调用reLaunch回到A。可能不止B能跳转到C,D也可能跳转到C,所以要判断只有B->C,从C返回才执行reLaunch到A。 B页面代码: wx.setStorageSync(getApp(…...
2023/3/28 15:57:44 - 小程序wxml管道
用过Angular的都知道管道的概念。 管道就是数据的转变,例如某个选项的value是A,对应文本显示为车票预订,如何在wxml页面上将A转化为车票预订? 一、新建wxs文件 function cgAnpai(str) {if(!str||str.length0){return ;}return …...
2023/3/28 15:57:43 - 小程序Tab选项卡
Tab选项卡下拉刷新、上拉加载更多数据空白页面显示滑动时,当页面无数据时才会触发刷新 网上小程序Tab选项卡的文章有很多,可都无法实现加载更多,因为swpier会使其失效。 删代码好累,自行看关键代码吧。 wxml代码 <view class&…...
2023/3/28 15:57:42 - 小程序textarea在IOS有默认padding
在开发工具和android都正常,在IOS真机上就会有个默认padding,大概10rpx长度。 而且这个默认padding根本不知道在哪里设置的,代码看不到。 设置为padding:0也不生效,设置为padding:10rpx就生效了。。。 也就是padding除了0不生效…...
2023/3/28 15:57:41 - 小程序动态class
wxml代码: <view class"{{isCountingDown?val-btn-counting:val-btn}}"></view> js代码: data: {isCountingDown: false} isCountingDown为true时,classval-btn-counting。 isCountingDown为false时,…...
2023/3/28 15:57:40 - 小程序二维码生成并保存相册
二维码生成并长按保存到系统相册,直接上代码。 wxml代码: <canvas canvas-idcanvas bindlongtapsave></canvas> js代码: // pages/admin-qrcode/admin-qrcode.js var QRCode require(../../utils/weapp-qrcode.js) var qrco…...
2023/3/28 15:57:38 - 小程序省市区选择
小程序有自带省市区选择控件,非常方便,mode"region"即可 wxml代码: <picker mode"region" bindchange"bindRegionChange" value"{{region}}" ><view class"choose-item">&l…...
2023/3/28 15:57:37 - 小程序身份证上传
效果自认很美,js逻辑不难,主要是各种状态的控制,重点在于页面代码。 下面是身份证正面的代码,反面代码类似。 wxml代码: <view class"row"><view class"delete {{zhengShow?show:hidden}}…...
2023/3/28 15:57:36 - 小程序请求超时
网上搜的全是只要fail,就toast请求超时,这种完全不符合我们的要求。 只有确实是超时了,才能toast请求超时。 排名前5的文章都是这样,看不下去了,无奈只能自己研究。 app.json可以设置超时时间,默认为60秒…...
2023/3/28 15:57:35 - 奇葩之想让我帮写代码还要白嫖
每天都有各种各样的人咨询我 有搞笑的,有奇葩的,也有真诚的。 今天特来记录一下,以前没记录可惜了。 准备记录成一个奇葩说 今天这位老哥刚工作,想让我远程帮他写代码以稳定他的工作,极低的价格,还想先…...
2023/3/28 15:57:34 - 7年厨师想转行程序员
7年厨师想转行,跟我学java。 可是工资只有7千我惊呆了,我还以为7年厨师工资至少1万多呢。 看来每个行业都有工资高也有工资低的,他可能属于厨师里工资低的吧...
2023/3/28 15:57:33 - 30岁小学毕业电工转java
通过我的博客慕名而来 说明天用花呗交学费,看来生活较窘迫 到了第二天,也不废话,直接交学费。是一个小学毕业的电工,想做java,工资高一点 发了一个测试题,他5分钟做完了,错误很多。 大家觉得小…...
2023/3/28 15:57:32 - Java入门第106课——测试集合持有对象
问题 测试集合持有对象,详细要求如下: 1)使用ArrayList构造集合对象cells。 2)构造行和列为(1,2)的Cell对象,将其放入集合cells中。 3)构造行和列为(2,3)的Cell类的对象cell,将其放入集合cells中。 4)输出cell对象和cells对象。 5)将cell对象下落一个格子。…...
2023/3/28 15:57:31 - Java入门第107课——使用add方法向集合中添加元素
问题 使用add方法向集合中添加元素,详细要求如下: 1)使用ArrayList构造集合对象c,并输出该对象。 2)将字符串“a”、"b"、“c”放入集合c中,再次输出集合对象。 方案 首先,使用ArrayList构造集合对象c,代码如下所示: Collection<String> c = ne…...
2023/3/28 15:57:30 - Java入门第108课——使用contains方法判断集合中是否包含某元素
问题 判断某集合中是否包含某元素,详细要求如下: 1)使用ArrayList构建集合对象cells,使用行和列为(1,2)、(1,3)、(2,3)、(2,3)构建四个Cell类的对象,并将这四个对象放入集合cells中。 2)使用行和列为(1,3)构建Cell类的对象cell。 3)比较cell对象在集合cel…...
2023/3/28 15:57:27 - Java入门第109课——集合的size、clear、isEmpty用法
问题 测试Collection接口中size方法、clear方法、isEmpty方法的用法,详细要求如下: 1)使用HashSet构建集合c,并判断当前集合是否为空。 2)将字符串“java”、“cpp”、“php”、"c#"、"objective-c"放入集合c中,并判断集合c是否为空以及集合c中元…...
2023/3/28 15:57:25 - Java入门第110课——JavaAPI上卷
课程图 1. 集合框架 1.1 Collection 1.1.1 【Collection】addAll、containsAll 1.2 Iterator 1.2.1 【Iterator】hasNext、next方法 1.2.2 【Iterator】remove方法...
2023/3/28 15:57:24 - Java入门第111课——集合addAll、containsAll的用法
问题 测试Collection接口中addAll方法、containsAll方法的用法,详细要求如下: 1)使用ArrayList构建集合c1,将字符串“java”、“cpp”、“php”、“c#”、“objective-c”放入集合c1中,并输出集合c1。 2)使用HashSet构建集合c2,将集合c1中的元素添加到集合c2,并输出…...
2023/3/28 15:57:23 - Java入门第112课——使用Iterator的hasNext方法、next方法遍历集合
问题 使用Iterator的hasNext方法、next方法遍历集合,详细要求如下: 1)使用HashSet构建集合c,将字符串"java"、"cpp"、"php"、"c#"、"objective-c"放入集合c中。 2)遍历集合中的每一个元素,并输出。 方案 1)首先…...
2023/3/28 15:57:22