JavaScript 有Array.join()
js>["Bill","Bob","Steve"].join(" and ")
Bill and Bob and Steve
Java有这样的东西吗?我知道我可以自己拼凑一些东西:StringBuilder
static public String join(List<String> list, String conjunction)
{
StringBuilder sb = new StringBuilder();
boolean first = true;
for (String item : list)
{
if (first)
first = false;
else
sb.append(conjunction);
sb.append(item);
}
return sb.toString();
}
..但是,如果类似的东西已经是JDK的一部分,那么这样做就没有意义了。
String.join
使用 Java 8,您可以在没有任何第三方库的情况下执行此操作。
如果要加入字符串集合,可以使用 () 方法:String.join
List<String> list = Arrays.asList("foo", "bar", "baz");
String joined = String.join(" and ", list); // "foo and bar and baz"
Collectors.joining
如果你的集合具有除字符串以外的其他类型,则可以将流 API 与加入的收集器一起使用:
List<Person> list = Arrays.asList(
new Person("John", "Smith"),
new Person("Anna", "Martinez"),
new Person("Paul", "Watson ")
);
String joinedFirstNames = list.stream()
.map(Person::getFirstName)
.collect(Collectors.joining(", ")); // "John, Anna, Paul"
该类也可能有用。StringJoiner
所有对Apache Commons的引用都很好(这是大多数人使用的),但我认为Guava等价物Joiner有一个更好的API。
您可以使用以下方法执行简单的连接情况
Joiner.on(" and ").join(names)
但也可以轻松处理空值:
Joiner.on(" and ").skipNulls().join(names);
或
Joiner.on(" and ").useForNull("[unknown]").join(names);
以及(就我而言,它足够有用,可以优先使用它而不是commons-lang),处理地图的能力:
Map<String, Integer> ages = .....;
String foo = Joiner.on(", ").withKeyValueSeparator(" is ").join(ages);
// Outputs:
// Bill is 25, Joe is 30, Betty is 35
这对于调试等非常有用。
不是开箱即用的,但许多库都有类似的:
Commons Lang:
org.apache.commons.lang.StringUtils.join(list, conjunction);
Spring:
org.springframework.util.StringUtils.collectionToDelimitedString(list, conjunction);
模板简介:该模板名称为【Java里面有Array.join()这样用法】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Java】栏目查找您需要的精美模板。