我有一段代码如下:
List<Integer> indexes = joinedCols
.map(x-> ((Tuple2)x)._1)
.collect();
return indexes;
我希望indexes
属于List<Integer>
类型但是,当我使用调试器检查时,我发现它是WrappedArray
的类型。因此,当我想要将返回的列表遍历为List
时,它的行为不像for (Integer i : indexes)
并导致错误。在这种情况下,如何将基础列表作为List<Integer>
的类型返回?
答案 0 :(得分:1)
但是,当我使用调试器检查时,我发现它是
的类型WrappedArray
您在调试器中看到的是值的类,但它实现了List
接口。所以它表现为List
(但请注意,List
接口中的许多操作都是可选的,此处不支持)。
当我想要将返回的列表遍历为for (Integer i : indexes)
时,并导致错误
这是因为您通过强制转换为原始Tuple2
来删除类型信息。假设您有一个JavaPairRDD<Integer, SomeType>
,只需删除演员应该给你一个List<Integer>
并允许这样迭代。