Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
787 views
in Technique[技术] by (71.8m points)

grails - count objects in an each loop with groovy

def numbers = [[duration:1, calldate:6, disposition:1], [duration:1, calldate:6, disposition:1], [duration:2, calldate:7, disposition:2], [duration:2, calldate:7, disposition:2], [duration:1, calldate:7, disposition:1], [duration:1, calldate:7, disposition:1], [duration:2, calldate:7, disposition:2], [duration:2, calldate:7, disposition:2], [duration:2, calldate:7, disposition:2], [duration:1, calldate:7, disposition:1], [duration:2, calldate:7, disposition:2], [duration:1, calldate:8, disposition:1], [duration:2, calldate:8, disposition:2], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:2, calldate:8, disposition:2], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:2, calldate:8, disposition:2], [duration:1, calldate:8, disposition:1], [duration:2, calldate:8, disposition:2], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:2, calldate:8, disposition:2], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1], [duration:1, calldate:8, disposition:1]]

numbers.eachWithIndex { item, i ->


println "${numbers[i]} calldate: ${item.calldate} Duration:         ${item.duration}  Disposition: ${item.disposition}"

        };

I need to count objects from duration and disposition but the call date has to be unique

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
numbers.groupBy {
   it.calldate
}.sort().each{
  def duration = (it.value*.duration).sum()
  def disposition = (it.value*.disposition).sum()
  println "$it.key $duration $disposition"
}

Output:

  6 2 2
  7 15 15
  8 94 94

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...