Mic*_*rry 438
如果您只想要一个数组的"调试样式"转储:
String str = Arrays.toString(arr);
Run Code Online (Sandbox Code Playgroud)
或者,为了更多控制(在Java 8之前):
StringBuilder builder = new StringBuilder();
for(String s : arr) {
builder.append(s);
}
String str = builder.toString();
Run Code Online (Sandbox Code Playgroud)
(Java 8及以上版本):
String str = String.join(",", arr);
Run Code Online (Sandbox Code Playgroud)
您可以根据字符串之间的字符数(如果有)修改上述内容.
您可能会看到与Java 8之前的代码几乎相同的代码,但使用StringBuffer- StringBuilder是一个不是线程安全的新类,但因此它在单个线程中具有更好的性能,因为它消除了不需要的同步.简而言之,StringBuilder在99%的情况下你最好使用- 功能明智,两者是相同的.
不要使用字符串,只需附加+ =,就像这里显示的一些答案一样.这会将GC发送到屋顶,因为您正在创建并丢弃与阵列中的项目一样多的字符串对象.对于小型阵列,您可能没有真正注意到差异,但对于大型阵列,它可能会慢几个数量级.
kro*_*ock 102
使用Apache公共StringUtils.join().它接受一个数组,作为参数(并且还具有重载Iterable和Iterator参数),并调用toString()每个元素(如果它不为null)以获取每个元素字符串表示.然后将每个元素字符串表示连接成一个字符串,如果指定了一个字符串,则在它们之间:
String joinedString = StringUtils.join(new Object[]{"a", "b", 1}, "-");
System.out.println(joinedString);
Run Code Online (Sandbox Code Playgroud)
生产:
a-b-1
Run Code Online (Sandbox Code Playgroud)
ric*_*ich 35
我喜欢使用Google的Guava Joiner,例如:
Joiner.on(", ").skipNulls().join("Harry", null, "Ron", "Hermione");
Run Code Online (Sandbox Code Playgroud)
将生成相同的字符串:
new String("Harry, Ron, Hermione");
Run Code Online (Sandbox Code Playgroud)
ETA:Java 8现在有类似的支持:
String.join(", ", "Harry", "Ron", "Hermione");
Run Code Online (Sandbox Code Playgroud)
看不到跳过空值的支持,但这很容易解决.
Joe*_*lav 13
你可以这样做,给定一个a基本类型的数组:
StringBuffer result = new StringBuffer();
for (int i = 0; i < a.length; i++) {
result.append( a[i] );
//result.append( optional separator );
}
String mynewstring = result.toString();
Run Code Online (Sandbox Code Playgroud)
Mid*_*rse 13
从Java 8开始,我认为最简单的方法是:
String[] array = { "cat", "mouse" };
String delimiter = "";
String result = String.join(delimiter, array);
Run Code Online (Sandbox Code Playgroud)
这样您就可以选择任意分隔符.
尝试使用Arrays.toString重载方法.
或者,尝试以下通用实现:
public static void main(String... args) throws Exception {
String[] array = {"ABC", "XYZ", "PQR"};
System.out.println(new Test().join(array, ", "));
}
public <T> String join(T[] array, String cement) {
StringBuilder builder = new StringBuilder();
if(array == null || array.length == 0) {
return null;
}
for (T t : array) {
builder.append(t).append(cement);
}
builder.delete(builder.length() - cement.length(), builder.length());
return builder.toString();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
549011 次 |
| 最近记录: |