def haveRepetArray=[1,5,1,6,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