【发布时间】:2019-10-15 06:07:30
【问题描述】:
java中是否有不会添加空对象的集合?给定一个项目列表,查询这些项目的数据库,当从数据库返回结果时,如果它确实存在于数据库中,我会将项目添加到结果列表中,如果它不数据库返回 null,那么我将丢弃它.
我有以下代码:
reqIds.forEach(
reqId -> {
columnValueMap.clear();
columnValueMap.put("request_id", reqId);
EventAudit auditRecord =
pollDatabaseFindByIdAndKey(
EventAudit.class, columnValueMap);
if (auditRecord != null) {
auditMap.put(auditRecord.getRequestId(), auditRecord);
}
});
我知道我可以使用 Java 流过滤器来过滤掉 null,但我想知道是否有任何智能集合会自动拒绝 null 对象,所以我不需要做额外的 Null 检查
【问题讨论】:
-
可以使用
google guava或apache commons等外部库,请看stackoverflow.com/questions/6433478/… -
没有你想要的。仅当您尝试添加
null时引发异常的集合。实现这样的集合也不是一个好主意,因为静默丢弃数据并不是明显的行为,而if (foo != null) add (foo)清楚地说明了会发生什么。 -
看起来你需要一张地图。根据github.com/google/guava/wiki/LivingWithNullHostileCollections
ConcurrentHashMap不允许nulls -
@Sunchezz 你确定你会得到一个没有空对象的集合吗? Javadocs 明确指出:“此类允许空元素”
-
@RobertKock 你是对的。删除了我的评论。不知道这些知识是从哪里来的 :( 以为我在某处读过这个……
标签: java