【问题标题】:addAll if collection is non emptyaddAll 如果集合不为空
【发布时间】:2020-06-17 16:23:29
【问题描述】:

如果集合为空,有什么方法可以停止 addAll 吗?我只想添加

departments = new HashMap<>();

faculty.forEach(faculty-> {
List<String> facultyStaff = get list by some operation ;
    departments.computeIfAbsent(departmentKey, value -> new ArrayList<>())
               .addAll(facultyStaff);
}

所以在上面的代码中,我想:

  1. 如果facultyStaff 不为空,则在departments 中创建一个条目
  2. 仅当 facultyStaff 非空时才添加

因为部门会被进一步使用,我想避免NullPointerArrayIndexOutOFBound出现异常。

【问题讨论】:

  • 在这个区块中,if 支票怎么样?或者主要通过流使用filter
  • 如果检查我可以做到。但如果可能的话,我正在寻找任何 java 8 API
  • 您是否从每个faculty 获得facultyStaffdepartmentdepartmentKeyfaculty 有什么关系?能否提供更多相关细节?
  • if 语句是有效的 Java 8。

标签: java lambda collections


【解决方案1】:

假设 departmentKey 是从 Faculty 对象中检索的,我们可以使用 Java 8 流重写您的逻辑。

final Map<String, List<String>> departments = faculty.stream()
                .map(fac -> new AbstractMap.SimpleEntry<>(fac.getDepartmentKey(), this.getFacultyStaff()))
                .filter(entry -> !entry.getValue().isEmpty())
                .collect(Collectors.toMap(AbstractMap.SimpleEntry::getKey, AbstractMap.SimpleEntry::getValue));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-04
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 2011-06-20
    相关资源
    最近更新 更多