【发布时间】:2017-09-02 07:58:43
【问题描述】:
def map = new HashMap<String,List<String>>()
def list = new ArrayList<String>()
def list1 = new ArrayList<String>()
list.add("hello1")
list.add("world1")
list.add("sample1")
list.add("sample1")
list1.add("hello2")
list1.add("world2")
list1.add("sample2")
list1.add("sample2")
map.put("abc",list)
map.put("bcd",list1)
def data = new ArrayList<String>()
for(e in map){
println "key = ${e.key} value=${e.value}"
// data = "${e.value} as String[]"
data = "${e.value}"
println "size ${data.size()} " --(B)
check(data)
}
def check(input)
{
println "${input.size()}" ---(A)
for(item in input){
print "$item "}
}
我必须从这个 groovy 脚本将 string[] 传递给另一个 java 函数。所以我试图读取数组列表,然后将其转换为字符串数组。但问题是当我将 {e.value} 分配给变量 data 并尝试获取大小 data.size() (步骤 (A) 和 (B) )时。和size is 34。它从列表中计算每个字符而不是整个单词。我想遍历列表中的每个单词。请让我知道如何解决这个问题。
样本输出为
key = abc value=[hello1, world1, sample1, sample1]
size 34
【问题讨论】:
-
为什么要将列表转换为 (G)String (
data = "${e.value}")?如果您需要传递String[]而不是List<String>您可以简单地“转换”它:["a","b","c"] as String[] -
data = "${e.value}"不需要。只需使用data = e.value