当前位置: 首页 > 知识库问答 >
问题:

Java 8映射失败为空值[重复]

哈栋
2023-03-14
public class Test {

    public static void main(String[] args) {
        HashMap<String, String> m = new HashMap<>();
        m.put("abc", null);

        m.entrySet().parallelStream().collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()));

    }

}

共有1个答案

陆绍辉
2023-03-14

但是collectors.tomap(列表如下):

public static <T, K, U, M extends Map<K, U>>
Collector<T, ?, M> toMap(Function<? super T, ? extends K> keyMapper,
                            Function<? super T, ? extends U> valueMapper,
                            BinaryOperator<U> mergeFunction,
                            Supplier<M> mapSupplier) {
    BiConsumer<M, T> accumulator
            = (map, element) -> map.merge(keyMapper.apply(element),
                                          valueMapper.apply(element), mergeFunction);
    return new CollectorImpl<>(mapSupplier, accumulator, mapMerger(mergeFunction), CH_ID);
}

使用合并方法:

@Override
public V merge(K key, V value,
               BiFunction<? super V, ? super V, ? extends V> remappingFunction) {
    if (value == null)
        throw new NullPointerException();
    if (remappingFunction == null)
        throw new NullPointerException();
     ...

如果map值为null,您将得到NPE。

 类似资料:
  • 我有一堆数据类,其中的值需要为null,因为数据库可能会为某些字段返回null。 据我所知,只有当Long是实际的Long而不是null时,才应该将该值传递给ApiClass构造函数,如果它是null,我会假设它将保持在构造中给出的默认值(在本例中为0) Info.extendedinfo.income是一个Long,它也可能是null,但是如果是null,它应该映射为0。 但是既然数据类很长呢?

  • 我刚开始冬眠,尝试一些应该很容易的事情,但我无法让它工作。 有两个表,一个人和一个地址。一个人可以有一个或多个地址,即:一个OneTo多映射。当我试图向两个不同的人添加相同的地址时,我会遇到异常。这几乎就像Unique在连接表的foriegn_key上被强制执行一样。 我的源代码: 人 地址 主要 代码在保存Person对象Harry时崩溃。这是因为在个人地址表中,引用“1”的地址已经存在并分配给

  • 我在Spring启动时使用推土机映射器。如果我将数据从实体映射到EntityDTO,那么dozer maper的工作就是将数据从实体类复制到EntityDTO,对于原语也是如此。但是假设我有这样一门课 和名称为EntityDTO的DTO 那么它不会将数据从entityChild映射到EntityChildTos,有人能帮我解决这个问题吗?

  • 我有映射键作为字符串和值作为列表。列表可以有10个唯一值。我需要转换这个映射键为整数和值为列表。示例如下: 输入: 2:“钥匙-1”,“钥匙-2” 3:“钥匙-1”、“钥匙-2”、“钥匙-3” 4:“钥匙-1”、“钥匙-2”、“钥匙-3”

  • 在Java8中使用和我是新手。我目前正在使用库来实现一些ML算法。我有以下代码: 如果数据正确或为空,函数将返回一个新的。如何在之后过滤(删除)对象?

  • 输入: 输出: 输入: 线程“main”java.lang.IllegalStateException中的异常:重复键-1.0 我怎么才能修好这个?