我知道在Groovy中,
如果
如果
list = [1,2,3,1]
什么时候
list.unique()
带着回归
[1,3]
但是,如果我想检测列表中重复,非连续项目的重复值.我怎样才能做到这一点?
detect([1,1]) => true detect([1,2]) => true detect([1,1,3]) => false detect([1,4]) => false
谢谢.
编辑:
添加这两个案例
detect([1,1]) => true
true表示发生任何非连续的重复.
解决方法
你应该能够MetaClass列表并添加自己的检测方法,如下所示:
List.MetaClass.detect = { def rslt = delegate.inject([]){ ret,elem -> ret << (ret && ret.last() != elem ? elem : !ret ? elem : 'Dup') } return (!rslt.contains('Dup') && rslt != rslt.unique(false)) } assert [1,1].detect() == true //Non-consecutive Dups 1 assert [1,2].detect() == true //Non-consecutive Dups 2 assert [1,3].detect() == false //Consecutive Dups 1 assert [1,3].detect() == false //Consecutive Dups 2 and 3 assert [1,4].detect() == false //Unique no dups
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。