groovy找到数组里的重复元素的下标

def haveRepetArray=[1,5,1,6,1,8,2,8,2,9,4,12]
  def findRepetition=[:]//找到重复的,重复的map值大于1不重复的值等于1
  def repetitionRes=[]//重复的结果
  def noRepetitionRes=[]//不重复的结果
  def arrElemIndex=[]//得到重复元素的下标
  def mapElemindex=[:]//通过键值的方式存储重复元素
haveRepetArray.each{a->
      if(findRepetition[a]==null){//如果这个map里没有这个键的时候就给值1,
          findRepetition[a]=1  
      }else{//如果这个map里有这个键的时候说明他是重复的就把值加1
          findRepetition[a]=findRepetition[a]+1
      }
  }
findRepetition.each{m->
    if(m.value>1){//编历如果这个map键的值大于1说明就是重复的把他放到一个数组里
        repetitionRes+=m.key
    }else{//说明不是重复的把他放到另外一个数组里
        noRepetitionRes+=m.key
    }
}
repetitionRes.each {entry ->//遍历重复的数组
    def tempArr=[]
    haveRepetArray.eachWithIndex {r,j->//遍历原始数组
     if(entry==r){//如果重复数组里的值等于原始数组里的值就把这个无素的索引放到一个新的数组里
         tempArr+=j//只取原始数组的索引
     }   
    }
    mapElemindex[entry]=tempArr//以键值对的方式存储数组
    arrElemIndex<<tempArr //添加到一个新数组
} 
println arrElemIndex
println mapElemindex

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值