Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Groovy 2.x中连接字符串集合的最常用方法_String_Join_Groovy - Fatal编程技术网

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 } : '')