Diferença entre operadores << e + em mapas Groovy

Ei aí … Eu tenho um problema com esses caras …

Não há diferença no resultado dessas duas operações.
Você pode usar o operador mais:
assert [ a: 1, b: 1 ] + [ a: 0 ] == [ a: 0, b: 1 ]
Ou deslocamento para a esquerda:
assert [ a: 1, b: 1 ] << [ a: 0 ] == [ a: 0, b: 1 ]
E o resultado seria o mesmo.

Mas…

A diferença é que << adiciona o mapa direito ao mapa esquerdo e, quando você usa + , Groovy constrói um novo mapa com base no mapa esquerdo e adiciona o mapa direito a ele.

Portanto, quando você precisar alterar uma instância de Mapa à esquerda – use o operador << ,
mas quando precisar criar uma nova instância de Mapa com base em dois ou mais mapas – use o operador + .