String Groovy 2.x中连接字符串集合的最常用方法
我刚才试过:String Groovy 2.x中连接字符串集合的最常用方法,string,join,groovy,String,Join,Groovy,我刚才试过: List<String> values = getSomehow() values.join(",") List values=getmodel() 值。连接(“,”) 但是请注意,join从2.1开始就被弃用了。所以我问:我应该如何按照最新的首选/非弃用语法编写此文档? 还有,有没有一种方法可以通过闭包来实现这一点?我觉得我可以在这里使用collect()或类似的工具。您需要使用Iterable或Iterator版本的join: 而不是 这是唯一一种被弃用的j
List<String> values = getSomehow()
values.join(",")
List values=getmodel()
值。连接(“,”)
但是请注意,join
从2.1开始就被弃用了。所以我问:我应该如何按照最新的首选/非弃用语法编写此文档?
还有,有没有一种方法可以通过闭包来实现这一点?我觉得我可以在这里使用
collect()
或类似的工具。您需要使用Iterable
或Iterator
版本的join
:
而不是
这是唯一一种被弃用的join
join(Iterable self,String separator)
和join(Object[]self,String separator)
是目前使用的较少的方法。您可以在DefaultGroovyMethods
中使用join
方法的迭代器。它的签名是相同的,只需要传入分隔符
它看起来是这样的:
List<String> values = ["string1", "string2", "string3"]
String joinedValues = values.join(",")
如果您担心弃用问题,那么Groovy JDK()的当前版本在Iterable
、Object[]
和Iterator
中显示了一个join(String)
方法,这些方法都没有弃用
由于所有集合都实现了Iterable
,因此您的原始语法很好
如果你真的想使用闭包,那么
List strings = ['this', 'is', 'a', 'list']
String result = strings.inject { acc, val ->
"$acc,$val"
}
assert result == 'this,is,a,list'
工作正常,但它肯定不比只使用字符串简单。join(',')
正如我在文档中看到的那样,join
在集合中不受欢迎,但在Iterable中不受欢迎
def joinedValues = (values as Iterable).join ', '
使用闭包,您可以尝试使用.inject
、head
和tail
编写它:
values.head() + (values.size() > 1 ? values.tail().inject( '' ) { acc, i -> acc+', ' + i } : '')
values.iterator().join(“,”)
@alfasin列表
扩展了集合
,它扩展了Iterable
。无需使用.iterator()
<代码>值。连接(“,”)
应该很好。列表
扩展集合
其中扩展了Iterable
。无需使用.iterator()
。
values.head() + (values.size() > 1 ? values.tail().inject( '' ) { acc, i -> acc+', ' + i } : '')