从Scala.WrappedArray转换为List<>

时间:2017-04-18 22:59:01

标签: java scala apache-spark lambda

我有一段代码如下:

List<Integer> indexes = joinedCols
            .map(x-> ((Tuple2)x)._1)
            .collect();

    return indexes;

我希望indexes属于List<Integer>类型但是,当我使用调试器检查时,我发现它是WrappedArray的类型。因此,当我想要将返回的列表遍历为List时,它的行为不像for (Integer i : indexes)并导致错误。在这种情况下,如何将基础列表作为List<Integer>的类型返回?

1 个答案:

答案 0 :(得分:1)

  

但是,当我使用调试器检查时,我发现它是WrappedArray

的类型

您在调试器中看到的是值的,但它实现了List接口。所以它表现为List(但请注意,List接口中的许多操作都是可选的,此处不支持)。

  当我想要将返回的列表遍历为for (Integer i : indexes)

时,

并导致错误

这是因为您通过强制转换为原始Tuple2来删除类型信息。假设您有一个JavaPairRDD<Integer, SomeType>,只需删除演员应该给你一个List<Integer>并允许这样迭代。

相关问题