Wednesday, April 01, 2009

Groovy Maps

Using Maps in Groovy is much simpler than in Java. Some key differences are:

  • Map declaration and instantiation are simpler

  • Elements of a Map can be accessed either using the bean style or array style

  • Iterating across Maps is far less verbose in Groovy than in Java



The code sample below is self explanatory



//Declaring and instantiating a Map
def emptyMap = [:]


//Populating a Map
//Notice that the keys which are strings are not
//enclosed within quotes
def population = [Estonia:1299371,
Finland:5250275,
Honduras:7792854,
HongKong:7055071]

//Non string keys must be enclosed in ()
def numbers = [(Integer.valueOf("1")):"One",
(Integer.valueOf("2")):"Two"]


//Accessing Map elements
//Maps can be accessed using bean style and
//array style notations respectively
println "Estonia population: " + population.Estonia
println "Finland population: " + population['Finland']
//Use default values in case key does not exist (if key does not exist, then
//it will be added with the default value)
println "Spain population: " + population.get("Spain", 40525002)

//Iterating over all the entries in a Map
println "Population stats"
population.each { key, value ->
println key + " : " + value
}

println "Numbers as words"
numbers.each() {
println it.key + ":" + it.value
}

//Search within a Map
println 'Countries with a population greater than 1 million'
result = population.findAll {key, value ->
value > 5000000
}
println 'population > 5000000 ' + result.keySet()



Output from running the above program:


Estonia population: 1299371
Finland population: 5250275
Spain population: 40525002
Population stats
Estonia : 1299371
Finland : 5250275
Honduras : 7792854
HongKong : 7055071
Spain : 40525002
Numbers as words
1:One
2:Two
Countries with a population greater than 1 million
population > 5000000 ["HongKong", "Finland", "Spain", "Honduras"]

No comments: