2025-11-13 10:27:52
List集合为啥能排好序还能没东西呢?说白了就是开发者给规定好的规则。有序就像你整理抽屉,东西摆得整整齐齐;为空就像抽屉暂时没放东西。比如你新建个列表,一开始啥都没有,这时候调用add方法往里塞东西,不会出问题。但Set集合就不行,它默认乱堆,而且刚建好的空集合直接调用add会报错,得等塞了东西才能继续用。
为啥这么设计呢?开发者想兼容不同场景。比如做购物车,刚开始没选商品时,列表为空能正常显示“暂无商品”;等选了东西再调用add,还能自动按添加顺序排列。而Set集合常用于去重,比如存用户ID,这时候必须一开始就有数据,否则调用add会直接崩溃。数据上有个对比:List集合调用add在空状态下返回true,而Set集合在空状态下调用add会抛NullPointerException,这就像空碗突然要装饭,碗没底会漏。所以设计上故意让List支持空状态,Set禁止空状态,正好区分两种需求。比如用代码测试的话,new ArrayList.add("苹果")不会报错,但new HashSet.add("苹果")如果集合刚创建就会报空指针异常。这就好比给两个不同功能的工具,一个允许空状态灵活使用,一个必须先有内容才能操作。
本题链接: