List<Long> preIds = records.stream().map(NoticeFullViewDto::getPreNo).filter(Objects::nonNull).collect(Collectors.toList()); records中只有一条数据且 preno为null,过滤掉PreNo为null的后,为什么返回的list preIds是null
时间: 2024-04-12 18:34:29 浏览: 109
根据您提供的信息,如果 `records` 中只有一条数据且 `PreNo` 为 `null`,那么根据您的代码逻辑,返回的 `preIds` 应该是一个空的 `List` 对象,而不是 `null`。
可能导致返回 `null` 的原因有以下几种情况:
1. 在代码中对 `preIds` 进行了赋值操作,将其赋值为 `null`。
请检查是否在代码中对 `preIds` 进行了其他操作,可能导致其被赋值为 `null`。
2. 在代码中对 `records` 进行了修改,导致其为 `null`。
请检查是否在获取 `preIds` 之前对 `records` 进行了修改,并且将其赋值为 `null`。
3. 在代码中使用了其他操作或条件判断,导致最终返回的结果为 `null`。
请检查代码中是否存在其他与 `preIds` 相关的操作,可能会影响到最终的结果。
请仔细检查以上情况,并确保在获取 `preIds` 前没有对其进行赋值为 `null` 的操作。如果问题仍然存在,请提供更多相关的代码和上下文信息,以便我能够更好地帮助您。
相关问题
List<Long> preIds = records.stream().map(NoticeFullViewDto::getPreNo).filter(Objects::nonNull).collect(Collectors.toList()); 过滤掉PreNo为null的后,为什么返回的list preIds是null
根据您提供的代码,将会返回一个 `preIds` 的 `List` 对象,该对象包含了所有 `records` 中的非空 `PreNo` 值。如果 `preIds` 为 `null`,可能有以下几种情况:
1. 如果 `records` 本身为 `null`,那么在调用 `stream()` 方法时会抛出 `NullPointerException` 异常,导致整个表达式返回 `null`。
2. 如果 `records` 不为 `null`,但其中没有任何元素,那么 `stream()` 方法返回的流将为空流,因此在调用 `collect()` 方法时会返回一个空的 `List` 对象,即 `preIds` 为一个空列表对象,而不是 `null`。
3. 如果 `records` 中所有元素的 `PreNo` 值都是 `null`,那么 `filter()` 方法将过滤掉所有元素,导致最终的结果是一个空的 `List` 对象。
请检查一下以上情况是否符合您的实际情况,并确保代码中没有其他因素导致 `preIds` 为 `null`。如果问题还未解决,请提供更多相关的代码和上下文信息,以便我能够更好地帮助您。
List<String> realValueFieldIds = accountFieldCollectionMap.values().stream().map(ConfAccountField::getFieldRelation).collect(Collectors.toList()); Map<String, ConfAccountField> fieldMap = MapUtil.transformUniqueIndexMap(confAccountFieldMap.values(), ConfAccountField::getFieldId); List<ConfAccountField> realSiteFields = realValueFieldIds.stream().map(fieldMap::get).filter(Objects::nonNull).distinct().collect(Collectors.toList());
这段代码使用了Java 8的Stream API,主要是对一些集合进行操作。具体来说,代码首先从一个名为accountFieldCollectionMap的Map中取出所有的值,即一个ConfAccountField对象的集合,然后对每个对象调用getFieldRelation方法,获取其关联的字段的ID,并将这些ID收集到一个List<String>中。
接下来,代码将confAccountFieldMap的所有值转化为一个Map<String, ConfAccountField>,其中键为ConfAccountField对象的getFieldId方法返回的ID,值为ConfAccountField对象本身。然后,代码从realValueFieldIds中取出每个ID,通过get方法从fieldMap中获取相应的ConfAccountField对象,如果对象存在且没有重复,则将其收集到一个List<ConfAccountField>中。
综上所述,这段代码的作用是根据一个Map中ConfAccountField对象的关联字段的ID,获取所有对应的ConfAccountField对象,并去除重复的对象。
阅读全文