在groovy中构建频率计数图.

Pho*_*nix 3 groovy

我有一个数组,我想建立一个地图,记录数组中元素的频率.因此,对于下面的示例,map = [15:2,16:1]就是它的样子.我如何在Groovy中执行此操作?

static void doSomething()
    {
        def a = [15,16,15]
        def map = []
        a.each{
            k,v-> 
            if(map.contains(it)) 
            map.putAt k, v++
            else
            map.putAt k, 1;
        }

        println map
    }
Run Code Online (Sandbox Code Playgroud)

doe*_*eri 13

在Groovy 1.8或更高版本中,

assert [15, 16, 15].countBy { it } == [15: 2, 16: 1]
Run Code Online (Sandbox Code Playgroud)