首页 > 解决方案 > 将 java Stream 转换为 Set

问题描述

我有一个二维整数数组,以及一个带有指向其中一个行的参数的方法。我想Set在该行的非零元素上返回 a ,并且我想在没有 for 循环的情况下执行此操作。所以这就是我尝试过的:

public Set<Integer> getNeighbors(int node) {
        assert node >= 0 && node < numNodes : "getNeighbors(): Invalid node parameter given: " + node + ".";
       return Arrays.stream(matrix[node]).filter(n->n>0).collect(Collectors.toSet());
    }

不幸的是,我遇到了一个很难解析的编译时错误:

我的 IDE 截图

有任何想法吗?

标签: javalambdajava-stream

解决方案


return Arrays.stream(matrix[node])
             .filter(n -> n > 0)
             .boxed()
             .collect(Collectors.toSet());

会做的。该.boxed()位是相关部分。


推荐阅读