Java知识点笔记(四):《Java 开发手册》的学习(二)

本文深入探讨了Java编程中的集合处理规则,包括Set存储对象的要求,ArrayList子列表操作注意事项,以及Map相关操作的限制。此外,文章还强调了线程安全和并发处理的重要性,如线程安全的单例模式、线程池的使用以及并发修改集合的避免策略。异常处理方面,提倡避免异常用于流程控制,确保捕获异常后的适当处理。日志规约部分,推荐使用SLF4J并遵循日志保留策略。最后,提到了单元测试的执行标准和工程结构的规范,确保代码质量与安全性。
摘要由CSDN通过智能技术生成

手册下载链接:https://pan.baidu.com/s/1s8esZSYZbRQW2IAQk3wZuw    提取码:i6ui

1、集合处理

只要覆写 equals,就必须覆写 hashCode

因为 Set 存储的是不重复的对象,依据 hashCode 和 equals 进行判断,所以 Set 存储的对象必须覆写这两个方法

如果自定义对象作为 Map 的键,那么必须覆写 hashCode 和 equals

ArrayList 的 subList 结果不可强转成 ArrayList,否则会抛出异常

使用 Map 的方法 keySet()/values()/entrySet() 返回集合对象时,不可以对其进行添加元素操作,否则会抛出异常

Collections 类返回的对象,如:emptyList()/singletonList() 等都是 immutable list,不可对其进行添加或者删除元素的操作

在 subList 场景中,高度注意对原集合元素的增加或删除,均会导致子列表的遍历、增加、删除产生异常

使用集合转数组的方法,必须使用集合的 toArray(T[] array),传入的是类型完全一致、长度为 0 的空数组

在使用 Collection 接口任何实现类的 addAll() 方法时,都要对输入的集合参数进行 NPE 判断

使用工具类 Arrays.asList() 把数组转换成集合时,不能使用其修改集合相关的方法,它的 add/remove/clear 方法会抛出异常

泛型通配符 <? extends T> 来接收返回的数据,不能使用 add 方法,<? super T> 不能使用 get 方法,作为接口调用赋值易出错 

PECS原则:第一、频繁往外读取内容的,适合用 <? extends T> ,第二、经常往里插入的,适合用  <? super T>

在无泛型限制定义的集合赋值给泛型限制的集合时,在使用集合元素时,需要进行 instanceof 判断,避免抛出异常

不要在 foreach 循环里进行元素的 remove/add 操作,remove 元素使用 Iterator 方式,如果并发操作,需要对 Iterator

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值