Groovy 如何筛选邻居相等的列表?请求类似unique()的内容

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

如果有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 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

您想要的是唯一的还是再次重复重复序列?您的预期结果似乎不完整。不确定是否理解您的问题:但我想要的结果是,在一个排序列表中,邻居彼此相等。唯一删除所有重复项。您想要的是唯一的还是再次重复序列?您的预期结果似乎不完整。不确定是否理解您的问题问:但是我想要一个结果,在排序的列表中,邻居彼此相等。唯一删除所有重复项。