Using Maps in Groovy is much simpler than in Java. Some key differences are:
The code sample below is self explanatory
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"]
- 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"]
Comments