加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

数组 – 2d scala数组迭代

发布时间:2020-12-16 09:56:28 所属栏目:安全 来源:网络整理
导读:我有一个类型为boolean的二维数组(不重要) 以非功能样式迭代数组很容易. 怎么做FP风格? var matrix = Array.ofDim[Boolean](5,5) 对于ex,我想迭代给定列的所有行并返回与特定函数匹配的int列表. 示例:对于第3列,如果(4,3),(5,3)处的单元格与特定函数匹配,
我有一个类型为boolean的二维数组(不重要)
以非功能样式迭代数组很容易.
怎么做FP风格?

var matrix = Array.ofDim[Boolean](5,5)

对于ex,我想迭代给定列的所有行并返回与特定函数匹配的int列表.
示例:对于第3列,如果(4,3),(5,3)处的单元格与特定函数匹配,则遍历第1行到第5行以返回4,5.太多了

def getChildren(nodeId: Int) : List[Int] = {
    info("getChildren("+nodeId+")")

    var list = List[Int]()
    val nodeIndex = id2indexMap(nodeId)

    for (rowIndex <- 0 until matrix.size) {
      val elem = matrix(rowIndex)(nodeIndex)
      if (elem) {
        println("Row Index = " + rowIndex)
        list = rowIndex :: list
      }
    }

    list
  }

解决方法

关于什么

(1 to 5) filter {i => predicate(matrix(i)(3))}

谓词是你的功能吗?

注意,用(5,5)索引初始化从0到4.

更新:根据您的示例

def getChildren(nodeId: Int) : List[Int] = {
  info("getChildren("+nodeId+")")
  val nodeIndex = id2indexMap(nodeId)

  val result = (0  until matrix.size).filter(matrix(_)(nodeIndex)).toList
  result.forEach(println)
  result
}

如果需要,您也可以在适配器中移动打印件,如果您希望它与示例完全相同,则可以反转列表

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读