你们是怎么避免 list 为空

2019-05-29 10:23:56 +08:00
 zxcjqyy
list != null?
6741 次点击
所在节点    程序员
40 条回复
wunonglin
2019-05-29 15:52:46 +08:00
list.length <= 0 ? false : true
no1xsyzy
2019-05-29 15:59:57 +08:00
@wunonglin op2 和 op3 正好一 #t 一 #f 的三目…… 瞎了
wunonglin
2019-05-29 16:23:49 +08:00
@no1xsyzy 你说的是啥。。?
Takamine
2019-05-29 16:53:18 +08:00
if list :
empty(list)
list || []
CollectionUtils
等等。
dabaitu
2019-05-29 16:54:47 +08:00
kotlin
list.let
svenFeng
2019-05-29 17:05:05 +08:00
Rust、Haskell:没有 null,不能每次都判断 null,真羡慕你们这些成功的语言。
fengjianxinghun
2019-05-29 17:06:01 +08:00
Rust 没有 null,不需要判断
siteshen
2019-05-29 17:08:07 +08:00
这个问题有歧义太大,导致答案五花八门,建议楼主补充一下问题的细节:

1. 用什么编程语言?
2. 谁要避免空 list ?是 producer 避免接收空 list 还是 consumer 避免产生空 list ?
3. 什么是“空”?元素个数为零,还是空指针,还是两者都是“空”?
chinjanry
2019-05-29 17:11:58 +08:00
List<Xxx> outputList = MoreObjects.firstNonNull(inputList, Lists.newArrayList());
wr410
2019-05-29 17:13:03 +08:00
为什么你们都可以随便使用第三方包?

我们通常只给用 jdk 和 org.apache 的包。
Remote
2019-05-29 17:14:59 +08:00
@NoKey 应该是 list.size > 0 吧
8a9a09dw12
2019-05-29 17:51:03 +08:00
assert 了解一下
Jrue0011
2019-05-29 17:56:52 +08:00
@wr410 也没别的包吧,CollectionUtils 是 apache commons 的,Optional 和 Collections 是 jdk 的,只有 MoreObjects 好像是 guava 的…
no1xsyzy
2019-05-29 18:33:50 +08:00
@wunonglin !x === x?false:true
linvaux
2019-05-29 18:40:36 +08:00
不用 list 不就好了,咳咳,认真点,用 guava 的 optional
syasuker
2019-05-29 19:04:13 +08:00
Utils.isListEmpty
lihongjie0209
2019-05-29 20:00:37 +08:00
集合就不应该是 null, 只应该是 empty
blackshadow
2019-05-29 20:53:59 +08:00
4 楼
Aresxue
2019-05-30 09:36:29 +08:00
申明的时候赋值一个空列表, Collections.EMPTY_LIST 这个就是专用的空列表不会占用内存。
troywinter
2019-05-30 23:07:24 +08:00
尽信书不如无书,虽然 effective java 建议返回 emptyList(),但是还是要分清场景,如果你之后不需要对这个 list 继续 modify,那么使用 emptyList 没有问题,但如果你后续的业务逻辑需要进一步对这个 list 做 modify,那么就会出现 exception,因为 emptyList 返回了 List<T>类型,实际是 immutable 的,就会出现 exception。所以遇到这种问题还是要多看源码结合自己的实际需求做取舍,no silver bullet.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/568656

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX