Groovy 2.x中加入字符串集合的Grooviest方法

IAm*_*aja 16 string groovy join

我刚尝试过:

List<String> values = getSomehow()
values.join(",")
Run Code Online (Sandbox Code Playgroud)

但是看到join自2.1以来已被弃用.所以我问:我应该如何根据最新的首选/不弃用语法编写?

另外,有没有办法通过闭包实现这一目标?我觉得我可以在collect()这里使用或类似的东西.

Dur*_*dal 20

您可以使用方法的Iterator变体.它的签名是相同的,只需要传递分隔符.joinDefaultGroovyMethods

它看起来像这样:

List<String> values = ["string1", "string2", "string3"]
String joinedValues = values.join(",")
Run Code Online (Sandbox Code Playgroud)

或者您可以在一行中完成所有操作:

String joinedValues = ["string1", "string2", "string3"].join(",")
Run Code Online (Sandbox Code Playgroud)

  • `List`扩展`Collection`,扩展了`Iterable`.没有必要使用`.iterator()`. (7认同)

kou*_*sen 5

如果您担心弃用问题,Groovy JDK 的当前版本 ( http://groovy-lang.org/gdk.html )join(String)在、 和 中显示了一个方法Iterable,其中没有一个被弃用。Object[]Iterator

由于所有集合都实现了Iterable,您的原始语法很好。

如果你真的想使用闭包,那么

List strings = ['this', 'is', 'a', 'list']
String result = strings.inject { acc, val ->
    "$acc,$val"
}
assert result == 'this,is,a,list'
Run Code Online (Sandbox Code Playgroud)

有效,但肯定不会比strings.join(',').