在Java中构建分隔项字符串的最佳方法是什么?

在Java应用程序中工作时,我最近需要组装一个逗号分隔的值列表,以传递给另一个web服务,而不需要事先知道有多少元素。我能想到的最好的办法是:

公共字符串appendWithDelimiter(字符串原始、字符串添加、字符串分隔符){
if(原始值等于(“”){
返回加法;
}否则{
返回原始+分隔符+加法;
}
}
字符串参数String=“”;
如果(条件)parameterString=appendWithDelimiter(parameterString,“elementName”、“,”);
如果(anotherCondition)parameterString=appendWithDelimiter(parameterString,“anotherElementName”,“,”);

我意识到这并不是特别有效,因为到处都在创建字符串,但我追求的是清晰而不是优化

在Ruby中,我可以做这样的事情,感觉更加优雅:

参数数组=[];
参数阵列&lt&书信电报;如果条件为“elementName”;
参数阵列&lt&书信电报;如果出现其他情况,则为“anotherElementName”;
parameterString=parameterArray.join(“,”);

但由于Java缺少join命令,我无法找到任何等效的命令

那么,在Java中实现这一点的最佳方法是什么

前Java 8:

Apache的commons lang是您在这里的朋友—它提供了一个与Ruby中所指的非常类似的连接方法:

StringUtils.join(java.lang.Iterable,char)


Java 8:

Java8通过StringJoinerString.join()提供开箱即用的连接。下面的代码片段显示了如何使用它们:

StringJoiner

细木工=新细木工(“,”);
加入者。添加(“01”)。添加(“02”)。添加(“03”);
String joinedString=joiner.toString();//"01,02,03"

String.join(CharSequence分隔符,CharSequence…元素))

String joinedString=String.join(“-”,“04”,“05”,“06”);//"04 - 05 - 06"

String.join(CharSequence分隔符,Iterable<?扩展CharSequence>元素)

列表<字符串>strings=新链接列表&lt&燃气轮机;();
添加(“Java”);字符串。添加(“is”);
字符串。添加(“酷”);
字符串消息=String.join(“,strings);
//返回的消息是:“Java很酷”

发表评论