我有一個常規列表如下Groovy的名單:分組元素的數量和發現頻率最高的元素
def certs = ['0xc1','0xc1','0xc1','0xc1','0xc2','0xc2','0xc3','0xc4','0xc4','0xc5','0xc5','0xc5','0xc5']
想找到每個元素和組通過其計數的次數。 我試過
certs.groupBy { it }.findAll { it.value.size() }
,但我得到下面的輸出
[0xc1:[0xc1, 0xc1, 0xc1, 0xc1], 0xc2:[0xc2, 0xc2], 0xc3:[0xc3], 0xc4:[0xc4, 0xc4], 0xc5:[0xc5, 0xc5, 0xc5, 0xc5]]
而是下面正在等
[0xc1:4, 0xc2:2, 0xc3:1, 0xc4:2, 0xc5:4]
有人可以幫助我?此外,我想在列表中找到最大出現在元素我的情況下其0xc1
和0xc5
UPDATE:
def myMap = certs.inject([:]) { m, x -> if (!m[x]) m[x] = 0; m[x] += 1; m }
def maxValue = myMap.values().max{it}
def myKeys = []
myMap.findAll{ it.value == maxValue }.each{myKeys << it?.key}
println myKeys // result = [0xc1:4, 0xc5:4]
//println myMap.sort { a, b -> b.value <=> a.value }
可以請你幫我解決完成這個問題? https://stackoverflow.com/questions/47717505/groovy-create-a-map-with-jax-b-objects-specific-attributes – RanPaul