使用流操作基于条件在Java中将List转换为Map

时间:2015-12-24 14:54:26

标签: java list dictionary java-8 java-stream

我正在尝试使用流将List转换为HashMap。这是我的代码..

attributeUnitMap = attributesList.stream()
    .filter(a -> a.getAttributeUnit() != null)
    .collect(Collectors.toMap(Attribute::getAttributeName, a -> a.getAttributeUnit()));

现在我想添加条件,如果我得到属性名称null,那么应该将项目添加到带有空白字符串的map中,如下所示(any_attributeName,"")。

如何使用流操作实现此目的。我知道我可以通过使用过滤条件来检查属性名称是否为null但是如果它为null则可以添加空字符串。可能吗?如果没有,为什么呢?请帮忙。

1 个答案:

答案 0 :(得分:8)

attributeUnitMap = attributesList.stream()
    .filter(a -> a.getAttributeUnit() != null)
    .collect(Collectors.toMap(
        a -> a.getAttributedName() == null ? "" : a.getAttributeName(),
        a -> a.getAttributeUnit()))