我有以下代码
List<String> test = new ArrayList<String>();
test.add("one");
test.add("two");
test.add("three");
使用Array Utils在单个字符串中输出"one,two,three"
。需要单线解决方案。
答案 0 :(得分:11)
使用加入
String joined2 = String.join(",", test );
答案 1 :(得分:1)
您无法使用ArrayUtils执行此操作。您可以使用Apache's StringUtils join function来获得所需的结果。
// result is "one,two,three"
StringUtils.join(test, ',');
如果您不想使用库,可以创建此功能:
public static String joiner(List<String> list, String separator){
StringBuilder result = new StringBuilder();
for(String term : list) result.append(term + separator);
return result.deleteCharAt(result.length()-separator.length()).toString();
}
答案 2 :(得分:0)
如果您必须使用ArrayUtils
,则可以使用List.toArray(T[])
(因为ArrayUtils
用于数组)和正则表达式用于删除{
和}
在一行如
List<String> test = new ArrayList<>(Arrays.asList("one", "two", "three"));
System.out.println(ArrayUtils.toString(test.toArray(new String[0]))
.replaceAll("[{|}]", ""));
输出(按要求)
一个,两个,三个
String.join(CharSequence, Iterable<? extends CharSequence>)
@Vishnu建议的answer提供了一个避开ArrayUtils
的解决方案(但可以说是更好,假设您可以使用它与
String joined2 = String.join(",", test);
System.out.println(joined2);
输出相同的。
答案 3 :(得分:-1)
List<String> test = new ArrayList<String>();
test.add("one");
test.add("two");
test.add("three");
Iterator it = test.iterator();
while(it.hasNext()){
String s=it.next();
StringBuilder sb = new StringBuilder();
sb.append(s);
}