Encode and parse URL query strings in Groovy

Groovy
import java.net.URLEncoder
import java.net.URLDecoder

String buildQuery(Map params) {
    params.collect { k, v ->
        "${URLEncoder.encode(k.toString(), 'UTF-8')}=${URLEncoder.encode(v.toString(), 'UTF-8')}"
    }.join('&')
}

Map parseQuery(String query) {
    query.split('&').findAll { it }.collectEntries { pair ->
        def (k, v) = pair.split('=', 2)
        [(URLDecoder.decode(k, 'UTF-8')): URLDecoder.decode(v ?: '', 'UTF-8')]
    }
}

def query = buildQuery([q: 'groovy & java', page: 2])
println query
println parseQuery(query)