当前位置: 首页 > wzjs >正文

是做网站编辑还是做平面设计品牌推广经典案例

是做网站编辑还是做平面设计,品牌推广经典案例,css网站图标,wordpress模板+免费Java 集合中 null 值允许情况总结与记忆技巧 一、核心集合对 null 的支持情况 集合类型Key 是否可为 nullValue 是否可为 null原因/备注HashMap✅ 是✅ 是对 null key 有特殊处理(存放在数组第 0 个位置)LinkedHashMap✅ 是✅ 是继承自 HashMapTreeMap…

Java 集合中 null 值允许情况总结与记忆技巧

一、核心集合对 null 的支持情况

集合类型Key 是否可为 nullValue 是否可为 null原因/备注
HashMap✅ 是✅ 是对 null key 有特殊处理(存放在数组第 0 个位置)
LinkedHashMap✅ 是✅ 是继承自 HashMap
TreeMap❌ 否✅ 是依赖 Comparator/Comparable,可能抛 NullPointerException
Hashtable❌ 否❌ 否设计较早,未做 null 处理(直接抛 NullPointerException
ConcurrentHashMap❌ 否❌ 否并发场景下 null 会歧义(如 get(key)返回null时无法区分是不存在还是值为null)
HashSet✅ 是-底层是 HashMap,value 固定为 PRESENT 对象
TreeSet❌ 否-底层是 TreeMap
ArrayList-✅ 是列表允许存储 null
LinkedList-✅ 是同 ArrayList
ArrayDeque-❌ 否作为队列/栈使用时,null 会干扰 poll() 等方法语义

二、记忆技巧(口诀)

1. Map 系列记忆法

"哈林可以,树并不行"

  • 哈(HashMap)、林(LinkedHashMap):允许 null key 和 null value

  • 树(TreeMap)、并(ConcurrentHashMap):不允许 null key

  • Hashtable:老古董,什么都不让用(联想:老顽固)

2. Set 系列记忆法

"Hash 随意,Tree 挑剔"

  • HashSet:允许 null(因为底层是 HashMap)

  • TreeSet:不允许 null(因为底层是 TreeMap)

3. List/Queue 记忆法

"列表宽容,队列严格"

  • ArrayList/LinkedList:允许 null

  • ArrayDeque:不允许 null(避免 poll() 歧义)


三、技术原因深度解析

1. 为什么 HashMap 允许 null?

  • 特殊处理:将 null key 的哈希值固定为 0,存储在数组第 0 个桶。

  • 代码示例(HashMap 的 put 方法):

    java

if (key == null) {return putForNullKey(value); // 特殊处理
}

2. 为什么 TreeMap 不允许 null key?

  • 排序依赖:必须调用 compareTo() 或 compare(),null 无法比较。

  • 代码示例

    java

// 如果 comparator 为 null,使用自然排序
Comparator<? super K> cpr = comparator;
if (cpr == null) {Comparable<? super K> k = (Comparable<? super K>) key; // 这里可能抛 NPE
}

3. 为什么 ConcurrentHashMap 完全禁止 null?

  • 并发歧义

    • 如果允许 null value,无法区分 map.get(key)==null 是"不存在该key"还是"该key的值为null"。

    • 作者 Doug Lea 的解释:"在非并发Map中,可以通过containsKey检查,但并发场景下检查与操作不是原子的"


四、面试高频问题

1. HashMap 如何处理 null key?

  • 存储在数组第 0 个桶(table[0]),哈希值固定为 0。

2. 哪些集合的迭代器可能抛 NullPointerException?

  • TreeMap/TreeSet:如果元素未实现 Comparable 或 Comparator 未处理 null。

3. 如何让 TreeMap 支持 null key?

  • 自定义 Comparator 处理 null:

    java

TreeMap<String, Integer> map = new TreeMap<>((a, b) -> {if (a == null) return -1; // 定义 null 的排序规则if (b == null) return 1;return a.compareTo(b);
});

五、总结表(速记版)

集合类型KeyValue记忆口诀
HashMap哈林可以
LinkedHashMap哈林可以
TreeMap树并不行(Tree不行)
Hashtable老古董
ConcurrentHashMap树并不行(Concurrent不行)
HashSet-Hash 随意
TreeSet-Tree 挑剔
ArrayList-列表宽容
ArrayDeque-队列严格

掌握这些规则和记忆技巧,面试时再也不用担心 null 值问题!

http://www.dtcms.com/wzjs/122293.html

相关文章:

  • 导购网站怎么做的百度seo公司报价
  • 外包做的网站怎么维护seo工具在线访问
  • 美食分享网站建设策划书sem代运营推广公司
  • 苏州有什么好玩的地方适合小朋友汕头seo排名收费
  • 网站基本信息设置网站关键词快速排名技术
  • 网页制作与网站建设技术大全(珍藏版)微商怎么找客源人脉
  • 三台网站建设哪家专业线上推广策划方案范文
  • c 网站开发技术湖北网站推广
  • 培训会网站建设网站排名搜索
  • 政府网站建设的战略seo是什么意思
  • 专业做网站较好的公司广州百度注册入口
  • 一起作业网站英语作业怎么做看广告赚钱
  • 如何用wd做网站设计app推广赚钱
  • 网页制作素材源代码seo整站优化更能准确获得客户
  • 什么做网站做个网站一般要多少钱啊seo排名影响因素主要有
  • 专门做物理的网站sem竞价外包公司
  • wordpress 小兽seo关键词挖掘
  • 网站建设怎么开发客户最常用的几个关键词
  • 深圳室内设计工作室排名搜索引擎优化方法案例
  • 外贸网站需要备案吗网站优化排名方案
  • 深圳营销型网站制作公司成都品牌推广
  • 兼职做放单主持那个网站好百度一级代理商
  • 珠海响应式网站建设茂名网络推广
  • phpcms v9 网站名称标签快速整站排名seo教程
  • 景区网站建设方案 费用云资源软文发布平台
  • 中国郑州建设信息网站百度排行榜小说
  • 葫芦岛城乡建设委员会网站环球网
  • 国外做ui的网站j站长工具星空传媒
  • 网站建设北京贵平台推广方式
  • 国内跨境电商平台有哪些?郑州seo服务技术