concept map in category groovy

This is an excerpt from Manning's book Groovy in Action, Second Edition.
Listing all the features of the IntelliJ Groovy plug-in would be a futile attempt. We wouldn’t even know where to start. It may be enough to say that any Groovy code is so tightly integrated that the lines with Java begin to blur. The screenshot in figure 1.7 shows a Groovy script that produces this book from docbook format to PDF. Note that the method getRepls() has no return type and is thus dynamically typed. It returns a map where both keys and values are strings. Now see how in the structure pane (left bottom) the return type is listed as Map<String,String>.
The specification of maps is analogous to the list specification that you saw in the previous section. Just like lists, maps make use of the subscript operator to retrieve and assign values. The difference is that maps can use any arbitrary type as an argument to the subscript operator, where lists are bound to integer indexes. Lists are aware of the sequence of their entries, maps are generally not. Specialized maps like java.util.TreeMap may have a sequence to their keys, though.
The character sequence [:] declares an empty map. Maps are, by default, of type java.util.LinkedHashMap, and can also be declared explicitly by calling the respective constructor. The resulting map can still be used with the subscript operator. In fact, this works with any type of map, as you see in the next listing with java.util.TreeMap.

This is an excerpt from Manning's book Making Java Groovy: Foreword by Guillaume Laforge.
Unlike Groovy, Java does not have native support for collections. Although collections have been a part of Java from the beginning in the form of arrays and the original java.util.Vector and java.util.Hashtable classes, a formal collections framework was added to the Java 2 Standard Edition, version 1.2. In addition to giving Java a small but useful set of fundamental data structures, such as lists, sets, and maps, the framework also introduced iterators that separated the way you moved through a collection from its underlying implementation. Finally, the framework introduced a set of polymorphic algorithms that work on the collections.
The URL shown is hard-wired to produce the chart in figure 2.1. To make this more general, I’ll show how to produce the URL from strings, lists, maps, closures, and builders.
I now need to append the query parameters to this URL. Rather than write the query string directly I’m going to use a typical idiom for this type of application, which is to build a map and then generate the query string from the map parameters. With that in mind, here’s the map of parameters:
In Groovy you create a map with square brackets, and each entry consists of keys and values separated by a colon. The keys are assumed to be strings by default. The values can be anything. By default, the params variable is an instance of java.util .LinkedHashMap.