I\'ve tried:
groovy:000> Set s = [\"a\", \"b\", \"c\", \"c\"]
===> [a, b, c]
groovy:000> s
Unknown property: s
I wa
This problem only occurs because you're using the Groovy Shell to test your code. I don't use the Groovy shell much, but it seems to ignore types, such that
Set<String> s = ["a", "b", "c", "c"]
is equivalent to
def s = ["a", "b", "c", "c"]
and the latter does of course create a List
. If you run the same code in the Groovy console instead, you'll see that it does actually create a Set
Set<String> s = ["a", "b", "c", "c"]
assert s instanceof Set
Other ways to create a Set
in Groovy include
["a", "b", "c", "c"].toSet()
or
["a", "b", "c", "c"] as Set
Groovy >= 2.4.0
Setting interpreterMode
to true
in groovy shell by
:set interpreterMode true
should fix this issue
Groovy < 2.4.0
Adding a type to the variable makes it a local variable which is not available to shell's environment.
use as below in groovysh
groovy:000> s = ['a', 'b', 'c', 'c'] as Set<String>
===> [a, b, c]
groovy:000> s
===> [a, b, c]
groovy:000> s.class
===> class java.util.LinkedHashSet
groovy:000>