Groovy 如何筛选邻居相等的列表?请求类似unique()的内容
如果有af字符串的列表,怎么能过滤出这样相等的邻居只出现一个呢 例如:Groovy 如何筛选邻居相等的列表?请求类似unique()的内容,groovy,Groovy,如果有af字符串的列表,怎么能过滤出这样相等的邻居只出现一个呢 例如: ['0.1', '0.1', '0.2','0.3','0.3','0.1','0.2'] 应该导致 ['0.1', '0.2','0.3','0.1','0.2'] 请注意,元素0、1仅显示一次,元素4和5也仅显示一次 如果使用唯一性: ['0.1', '0.1', '0.2','0.3','0.3','0.1','0.2'].unique() 结果将是: ['0.1', '0.2','0.3'] //what
['0.1', '0.1', '0.2','0.3','0.3','0.1','0.2']
应该导致
['0.1', '0.2','0.3','0.1','0.2']
请注意,元素0、1仅显示一次,元素4和5也仅显示一次
如果使用唯一性:
['0.1', '0.1', '0.2','0.3','0.3','0.1','0.2'].unique()
结果将是:
['0.1', '0.2','0.3'] //what is not wanted
对最佳groovy方法有什么建议吗?因此,如果要删除重复的邻居,应该从当前循环中获取下一项。我想到了这样的事情:
def example = ['0.1', '0.1', '0.2','0.3','0.3','0.1','0.2']
def array = []
example.eachWithIndex { item, index ->
def next = index < example.size() - 1 ? example[ index + 1 ] : null
if(next != item) {
array.push(item)
}
}
println array
def示例=['0.1','0.1','0.2','0.3','0.3','0.1','0.2']
def数组=[]
example.eachWithIndex{item,index->
def next=index
所以,如果要删除重复的邻居,应该从当前循环中获取下一项。我想到了这样的事情:
def example = ['0.1', '0.1', '0.2','0.3','0.3','0.1','0.2']
def array = []
example.eachWithIndex { item, index ->
def next = index < example.size() - 1 ? example[ index + 1 ] : null
if(next != item) {
array.push(item)
}
}
println array
def示例=['0.1','0.1','0.2','0.3','0.3','0.1','0.2']
def数组=[]
example.eachWithIndex{item,index->
def next=index
一个简单的选项是使用尾随值进行迭代:
def example = ['0.1', '0.1', '0.2','0.3','0.3','0.1','0.2']
def array = []
def trailing = -999
example.each { item ->
if (item != trailing) { array << item }
trailing = item
}
assert ['0.1','0.2','0.3','0.1','0.2'] == array
def示例=['0.1','0.1','0.2','0.3','0.3','0.1','0.2']
def数组=[]
def尾部=-999
示例.each{item->
如果(item!=training){array一个简单的选项是使用尾部值进行迭代:
def example = ['0.1', '0.1', '0.2','0.3','0.3','0.1','0.2']
def array = []
def trailing = -999
example.each { item ->
if (item != trailing) { array << item }
trailing = item
}
assert ['0.1','0.2','0.3','0.1','0.2'] == array
def示例=['0.1','0.1','0.2','0.3','0.3','0.1','0.2']
def数组=[]
def尾部=-999
示例.each{item->
如果(item!=training){array另一种更有效的方法是使用inject
(在其他语言中称为reduce):
那么输出是:
acc: [0.1] val: 0.1
acc: [0.1] val: 0.1
acc: [0.1] val: 0.2
acc: [0.1, 0.2] val: 0.3
acc: [0.1, 0.2, 0.3] val: 0.3
acc: [0.1, 0.2, 0.3] val: 0.1
acc: [0.1, 0.2, 0.3, 0.1] val: 0.2
另一种更实用的方法是使用inject
(在其他语言中称为reduce):
那么输出是:
acc: [0.1] val: 0.1
acc: [0.1] val: 0.1
acc: [0.1] val: 0.2
acc: [0.1, 0.2] val: 0.3
acc: [0.1, 0.2, 0.3] val: 0.3
acc: [0.1, 0.2, 0.3] val: 0.1
acc: [0.1, 0.2, 0.3, 0.1] val: 0.2
您想要的是唯一的还是再次重复重复序列?您的预期结果似乎不完整。不确定是否理解您的问题:但我想要的结果是,在一个排序列表中,邻居彼此相等。唯一删除所有重复项。您想要的是唯一的还是再次重复序列?您的预期结果似乎不完整。不确定是否理解您的问题问:但是我想要一个结果,在排序的列表中,邻居彼此相等。唯一删除所有重复项。