我的代码崩溃了java.util.NoSuchElementException:接下来是空迭代器异常。
def myfunction(arr : Array[(Int,(String,Int))]) = {
val values = (arr.sortBy(x => (-x._2._2, x._2._1.head)).toList)
...........................
代码在我试图对数组进行排序的第一行崩溃。
var arr = Array((1,("kk",1)),(1,("hh",1)),(1,("jj",3)),(1,("pp",3)))
我试图在内部元组的第二个元素的基础上对数组进行排序。如果存在相等,则应在内元组的第一个元素上进行排序。
输出 - ((1,(" pp",3)),(1,(" jj",3)),(1,(" hh&# 34;,1)),(1,(" KK",1)))
在某些情况下崩溃(通常它工作正常),我猜这是由于空数组。
如何摆脱这种崩溃或任何其他优雅的方法来实现相同的结果。
答案 0 :(得分:9)
这是因为您的某个数组项(Int,(String,Int))
包含空字符串。
"".head
导致
java.util.NoSuchElementException:下一个空迭代器
使用x._2._1.headOption
答案 1 :(得分:3)
val values = (arr.sortBy(x => (-x._2._2, x._2._1)).toList)
从语句中删除头部。由于arr
var arr = Array((1,("kk",1)),(1,("hh",1)),(1,("jj",3)),(1,("pp",3)),(1,("",1)))
答案 2 :(得分:1)
我在spark中使用MLlib并得到此错误,事实证明我预测不存在的userID或itemID,ALS将生成预测矩阵(userIDs * itemIDs),您必须确保包含您的请求在这个矩阵中。