比较两个列表时发生奇怪的事情 (groovy)
Weird occurrence happening when comparing two list (groovy)
如果另一个列表也包含类似项目,我正在尝试扫描一个列表的内容。
我也不确定这是否是我当前使用的浏览列表的最有效方法。
下面我正在尝试的代码 运行:
List list1 = [["GNCSSTDI", "Joe", "Thu Mar 07 19:43:59 EST 2019", "Logged work on 3/7"], ["LMGQYNQU", "Joe", "Thu Mar 07 21:41:50 EST 2019", "logged 3/7"]]
List list2 = ["GNCSSTDI", "LMGQYNQU", "AEIOSJWP"]
list1.each { l1 ->
list2.each { l2 ->
if (list1.toString() == l2.toString())
{
// match found
log.debug("MATCH FOUND")
}
}
}
它从不迭代到那个 for 循环?我到底做错了什么。如果我没记错的话,每个列表中的第一项应该是匹配的?
谢谢
list1 是 list
个列表。因此,您应该在从 list1
获取后再次迭代每个项目
list1.each { l1 ->
l1.each { subL1 ->
list2.each { l2 ->
if (subL1.toString() == l2.toString()) {
// match found
println "match found"
}
}
}
}
根据您要对结果执行的操作,类似这样的内容可能会有用;
List matches = list1*.intersect(list2).flatten()
您的示例的结果将是:[GNCSSTDI, LMGQYNQU]
如果另一个列表也包含类似项目,我正在尝试扫描一个列表的内容。
我也不确定这是否是我当前使用的浏览列表的最有效方法。
下面我正在尝试的代码 运行:
List list1 = [["GNCSSTDI", "Joe", "Thu Mar 07 19:43:59 EST 2019", "Logged work on 3/7"], ["LMGQYNQU", "Joe", "Thu Mar 07 21:41:50 EST 2019", "logged 3/7"]]
List list2 = ["GNCSSTDI", "LMGQYNQU", "AEIOSJWP"]
list1.each { l1 ->
list2.each { l2 ->
if (list1.toString() == l2.toString())
{
// match found
log.debug("MATCH FOUND")
}
}
}
它从不迭代到那个 for 循环?我到底做错了什么。如果我没记错的话,每个列表中的第一项应该是匹配的?
谢谢
list1 是 list
个列表。因此,您应该在从 list1
list1.each { l1 ->
l1.each { subL1 ->
list2.each { l2 ->
if (subL1.toString() == l2.toString()) {
// match found
println "match found"
}
}
}
}
根据您要对结果执行的操作,类似这样的内容可能会有用;
List matches = list1*.intersect(list2).flatten()
您的示例的结果将是:[GNCSSTDI, LMGQYNQU]