在Java应用程序中工作时,我最近需要组装一个逗号分隔的值列表,以传递给另一个web服务,而不需要事先知道有多少元素。我能想到的最好的办法是:
公共字符串appendWithDelimiter(字符串原始、字符串添加、字符串分隔符){
if(原始值等于(“”){
返回加法;
}否则{
返回原始+分隔符+加法;
}
}
字符串参数String=“”;
如果(条件)parameterString=appendWithDelimiter(parameterString,“elementName”、“,”);
如果(anotherCondition)parameterString=appendWithDelimiter(parameterString,“anotherElementName”,“,”);
我意识到这并不是特别有效,因为到处都在创建字符串,但我追求的是清晰而不是优化
在Ruby中,我可以做这样的事情,感觉更加优雅:
参数数组=[];
参数阵列<&书信电报;如果条件为“elementName”;
参数阵列<&书信电报;如果出现其他情况,则为“anotherElementName”;
parameterString=parameterArray.join(“,”);
但由于Java缺少join命令,我无法找到任何等效的命令
那么,在Java中实现这一点的最佳方法是什么
前Java 8:
Apache的commons lang是您在这里的朋友—它提供了一个与Ruby中所指的非常类似的连接方法:
StringUtils.join(java.lang.Iterable,char)
Java 8:
Java8通过StringJoiner和String.join()提供开箱即用的连接。下面的代码片段显示了如何使用它们:
细木工=新细木工(“,”);
加入者。添加(“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=新链接列表<&燃气轮机;();
添加(“Java”);字符串。添加(“is”);
字符串。添加(“酷”);
字符串消息=String.join(“,strings);
//返回的消息是:“Java很酷”