如何根据groovy中的条件从集合中删除节点

如何根据groovy中的条件从集合中删除节点,groovy,Groovy,如果同一日期存在“Action value exist'U'和'D'”,我将尝试删除所有节点 它应该只在列表中保留以下示例列表中的前两个节点,因为它没有“D”操作-日期:2015-03-16,日期:2015-03-17,日期:2015-03-22 已尝试列表。唯一,但不起作用,因为如果U&D两个操作都存在,则需要删除所有。请建议 [ [UserName:test, FileName:Santande.gpg, ServerPort:21, Success:true,Date:2015-03-

如果同一日期存在“Action value exist'U'和'D'”,我将尝试删除所有节点

它应该只在列表中保留以下示例列表中的前两个节点,因为它没有“D”操作-日期:2015-03-16,日期:2015-03-17,日期:2015-03-22

已尝试列表。唯一,但不起作用,因为如果U&D两个操作都存在,则需要删除所有。请建议

[
  [UserName:test, FileName:Santande.gpg, ServerPort:21, Success:true,Date:2015-03-16 06:28:46.12, Action:U],
 [UserName:test, FileName:Santande.gpg, ServerPort:21, Success:true, Date:2015-03-17 08:27:05.157, Action:U], 
 [UserName:test, FileName:Santande.gpg, ServerPort:21, Success:true, Date:2015-03-18 08:49:37.98, Action:U], 
 [UserName:test, FileName:Santande.gpg,  ServerPort:22, Success:true, Date:2015-03-18 14:00:42.23, Action:D],
 [UserName:test, FileName:Santande.gpg, ServerPort:22, Success:true, Date:2015-03-18 15:00:42.321, Action:D], 
 [UserName:test, FileName:Santande.gpg,  ServerPort:21, Success:true, Date:2015-03-19 07:12:15.616, Action:U],
 [UserName:test, FileName:Santande.gpg, ServerPort:22, Success:true, Date:2015-03-19 08:00:47.697, Action:D],
 [UserName:test, FileName:Santande.gpg, ServerPort:22, Success:true, Date:2015-03-19 09:00:48.14, Action:D],
 [UserName:test, FileName:Santande.gpg, ServerPort:22, Success:true, Date:2015-03-19 10:00:53.163, Action:D], 
 [UserName:test, FileName:Santande.gpg, ServerPort:22, Success:true, Date:2015-03-20 09:00:47.373, Action:D], 
 [UserName:test, FileName:Santande.gpg, ServerPort:21, Success:true, Date:2015-03-20 09:08:51.637, Action:U], 
 [UserName:test, FileName:Santande.gpg, ServerPort:22, Success:true, Date:2015-03-23 08:00:37.413, Action:D], 
 [UserName:test, FileName:Santande.gpg, ServerPort:22, Success:true, Date:2015-03-23 09:00:46.423, Action:D],
 [UserName:test, FileName:Santande.gpg, ServerPort:21, Success:true, Date:2015-03-23 09:06:32.997, Action:U],
 [UserName:test, FileName:Santande.gpg, ServerPort:22, Success:true, Date:2015-03-23 10:00:50.33, Action:D]
 [UserName:test, FileName:Santande.gpg, ServerPort:22, Success:true, Date:2015-03-22 10:00:50.33, Action:U]
]

按日期分组,然后选择不包含
U
D
条目的组。例如:

println([
 [UserName:'test', FileName:'Santande.gpg', ServerPort:'21', Success:'true', Date:'2015-03-16 06:28:46.120', Action:'U'],
 [UserName:'test', FileName:'Santande.gpg', ServerPort:'21', Success:'true', Date:'2015-03-17 08:27:05.157', Action:'U'], 
 [UserName:'test', FileName:'Santande.gpg', ServerPort:'21', Success:'true', Date:'2015-03-18 08:49:37.980', Action:'U'], 
 [UserName:'test', FileName:'Santande.gpg', ServerPort:'22', Success:'true', Date:'2015-03-18 14:00:42.230', Action:'D'],
].groupBy{ 
    it.Date.tokenize().first() 
}.findAll{ 
    it.value*.Action.toSet()!=['U','D'].toSet() 
}*.value.flatten())

按日期分组,然后选择不包含
U
D
条目的组。例如:

println([
 [UserName:'test', FileName:'Santande.gpg', ServerPort:'21', Success:'true', Date:'2015-03-16 06:28:46.120', Action:'U'],
 [UserName:'test', FileName:'Santande.gpg', ServerPort:'21', Success:'true', Date:'2015-03-17 08:27:05.157', Action:'U'], 
 [UserName:'test', FileName:'Santande.gpg', ServerPort:'21', Success:'true', Date:'2015-03-18 08:49:37.980', Action:'U'], 
 [UserName:'test', FileName:'Santande.gpg', ServerPort:'22', Success:'true', Date:'2015-03-18 14:00:42.230', Action:'D'],
].groupBy{ 
    it.Date.tokenize().first() 
}.findAll{ 
    it.value*.Action.toSet()!=['U','D'].toSet() 
}*.value.flatten())

按日期分组,然后选择不包含
U
D
条目的组。例如:

println([
 [UserName:'test', FileName:'Santande.gpg', ServerPort:'21', Success:'true', Date:'2015-03-16 06:28:46.120', Action:'U'],
 [UserName:'test', FileName:'Santande.gpg', ServerPort:'21', Success:'true', Date:'2015-03-17 08:27:05.157', Action:'U'], 
 [UserName:'test', FileName:'Santande.gpg', ServerPort:'21', Success:'true', Date:'2015-03-18 08:49:37.980', Action:'U'], 
 [UserName:'test', FileName:'Santande.gpg', ServerPort:'22', Success:'true', Date:'2015-03-18 14:00:42.230', Action:'D'],
].groupBy{ 
    it.Date.tokenize().first() 
}.findAll{ 
    it.value*.Action.toSet()!=['U','D'].toSet() 
}*.value.flatten())

按日期分组,然后选择不包含
U
D
条目的组。例如:

println([
 [UserName:'test', FileName:'Santande.gpg', ServerPort:'21', Success:'true', Date:'2015-03-16 06:28:46.120', Action:'U'],
 [UserName:'test', FileName:'Santande.gpg', ServerPort:'21', Success:'true', Date:'2015-03-17 08:27:05.157', Action:'U'], 
 [UserName:'test', FileName:'Santande.gpg', ServerPort:'21', Success:'true', Date:'2015-03-18 08:49:37.980', Action:'U'], 
 [UserName:'test', FileName:'Santande.gpg', ServerPort:'22', Success:'true', Date:'2015-03-18 14:00:42.230', Action:'D'],
].groupBy{ 
    it.Date.tokenize().first() 
}.findAll{ 
    it.value*.Action.toSet()!=['U','D'].toSet() 
}*.value.flatten())

列表中的对象是否有唯一ID集?蛋白石,没有唯一ID。列表中的对象是否有唯一ID集?蛋白石,没有唯一ID。列表中的对象是否有唯一ID集?蛋白石,没有唯一ID。列表中的对象是否有唯一ID集?蛋白石,没有唯一ID。魅力十足,cfrick!你是很棒的程序员。非常感谢。工作得很有魅力,cfrick!你是很棒的程序员。非常感谢。工作得很有魅力,cfrick!你是很棒的程序员。非常感谢。工作得很有魅力,cfrick!你是个很棒的程序员。非常感谢。