Groovy列表或2D数组

时间:2013-03-27 10:59:33

标签: collections groovy

我是groovy的新手,我正在编写一个程序,用于从输入文件中读取数字,该文件具有以下格式

1 
2 3
4 5 6
7 8 9 10

我希望将它们存储在2D数组中,我将如何实现它?

到目前为止,我有以下代码用于读取方法

private read(fileName){
    def count = 0
    def fname = new File(fileName)

    if (!fname.exists())
        println "File Not Found"

    else{
        def input = []
        def inc = 0
        fname.eachLine {line->
            def arr = line.split(" ")
            def list = []
            for (i in 1..arr.length-1)  {
                list.add(arr[i].toInteger())
            }
            input.add(list)//not sure if this is correct
            inc++
        }
        input.each {
             print it
                //not sure how to reference the list 
        }

    }
}

我可以打印列表,但我不知道如何使用程序中的列表列表(用于对其执行其他操作)。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

input.each上,你需要的是在行中的每个项目中再次迭代。如果它是一个未知深度的集合,那么你需要坚持使用递归方法。

做了一些小改动并删除了inc,因为它不需要(至少在代码段中):

fname = """1 
2 3
4 5 6
7 8 9 10"""

def input = []
fname.eachLine { line->
  def array = line.split(" ")
  def list = []
  for (item in array)  {
      list.add item.toInteger()
  }
  input.add list 
}

input.each { line ->
   print "items in line: "
   for (item in line) {
     print "$item "
   }
   println ""
}

打印:

items in line: 1 
items in line: 2 3 
items in line: 4 5 6 
items in line: 7 8 9 10 

这是简单的迭代。您可以使用@Tim的建议在Groovy中使其更具惯用性: - )