zoukankan      html  css  js  c++  java
  • 203 01 Android 零基础入门 03 Java常用工具类 04 Java集合 03 Set集合 07 删除宠物猫信息数据(引入泛型知识点)

    203 01 Android 零基础入门 03 Java常用工具类 04 Java集合 03 Set集合 07 删除宠物猫信息数据(引入泛型知识点)

    本文知识点:删除宠物猫信息数据(引入泛型知识点)

    说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤进行详细的文字说明(后面博主时间充裕了,会对目前的博客编辑修改,补充上详细的文字说明);有些步骤和相关知识点缺乏文字描述,可能会难以理解。读者如有不明之处,欢迎博客私信或者微信(本人微信在博客下方的“关于博主”处)与本人交流,共同进步

    泛型

    使用泛型后,避免强制类型转换带来的潜在隐患潜在错误。(不使用泛型的情况下,可以强制类型转换,但是如果强制类型转换过程中转换错了类型,编译时是不报错的,运行时却会出错)。

    但是使用泛型后,强制类型转换错了类型,就一定会报错。并且在引入泛型后,添加数据前类型就已经规定好了,数据类型在添加时就不出错,后续获取数据时也就不需要强制类型转换了。

    泛型示例代码
    集合和迭代器后都需要加入尖括号,尖括号中写上需要添加的元素对象的类型。
    mark

    使用泛型后,添加元素的代码的黄色警告也会消失。

    使用泛型后,强制类型转换时,类型转换出错时,编译时就会有错误提示:
    mark

    实际上,引入泛型后,添加数据时没有错误的情况下,取数据时,根本也不需要强制类型转换,因为数据添加时的类型本来就是正确的:
    mark

    删除宠物猫信息数据

    删除花花二代的信息并重新输出集合中的元素:使用remove()方法
    注:引入泛型后,除了迭代器外,还可以使用增强型for循环来遍历集合。
    mark
    删除花花二代成功
    mark

    删除集合中所有元素的信息:使用removeAll()方法
    删除了整个set集合,宠物猫元素都被删除
    mark

    也可以使用set集合的isEmpty()方法判断集合是否为空,即集合中是否没有元素(这里可以理解为:元素是否都被删除了)
    mark

    删除花花,出现异常:
    mark
    mark

    为什么删除花花二代时没有问题,但是删除花花时出现异常了呢?
    这是因为集合在进行设计的时候,为了避免数据的不一致性做了一个限制:读取数据时,不允许对数据进行删除的。

    这个问题比较好解决,添加一个break即可:只要找到满足条件的数据,就不再进行下一步的遍历。
    mark
    添加break之后,输出结果就没有问题了
    mark

    这时候,有了新问题,上面的例子中,是只有一个满足循环条件的数据(即花花满足)需要被删除,我们在增强型for循环遍历的过程中,通过添加break语句即可解决;如果我们想在循环中有多个满足条件的数据需要删除(即集合中我们想要移除多个元素),该怎么处理呢?

    原来的需求:把名字为花花的这一个宠物猫元素删除
    新需求:把月龄小于5个月的所有宠物猫元素都删除
    注意:花花12个月、凡凡3个月、花花二代2个月
    mark
    mark

    所以,此时满足提交的宠物猫元素有2个,凡凡和花花二代都小于5个月
    这个时候,判断语句肯定不能break了,因为我们要找的不只是一个元素,不是有一个满足条件就要跳出循环,我们还要找第二个满足条件的……
    mark
    mark

    又出现异常:
    mark

    那么,这个异常如何解决呢?
    有办法
    set类中removeAll()方法,可以传入一个集合参数,就能删除整个集合。
    那我们也能删除某个集合的子集,把某个集合中的一些满足条件需要删除的元素,重新组成一个新的集合(即原来集合的子集)
    如下图:set1集合是set集合的子集,使用removeAll方法,删除set集合中的满足删除条件的元素构成的子集set1
    mark
    删除成功,删除操作后,满足条件的小于5个月的凡凡和花花二代都被成功删除了,只剩下12个月的花花。
    mark

    删除总结

    1、只删除一个元素:
    增强型for循环,删除后break跳出循环

    2、删除多个元素
    将需要删除的满足条件的元素添加到一个集合(子集)中,再使用removeAll()方法

  • 相关阅读:
    Spring boot中使用log4j
    Spring Boot多数据源配置与使用
    Spring Boot中Web应用的统一异常处理
    Spring Boot中使用Redis数据库
    Spring Boot日志管理
    Spring Boot中使用@Async实现异步调用
    Spring Boot中使用@Scheduled创建定时任务
    正则表达式匹配不包含某些字符串
    Spring Boot中使用JdbcTemplate访问数据库
    Selenium2学习-024-WebUI自动化实战实例-022-网站不同分辨率下页面样式展示兼容性问题解决方案 -- 设置浏览器显示区域大小(无人值守,节约测试成本的福音,BOSS 最爱)
  • 原文地址:https://www.cnblogs.com/xlfcjx/p/13928955.html
Copyright © 2011-2022 走看看