我有一个数组列表,我想把它完全输出为字符串。本质上,我想使用每个元素的toString按顺序输出它,每个元素由制表符分隔。有什么快速的方法吗?你可以循环遍历它(或删除每个元素),并将它连接到一个字符串,但我认为这将是非常缓慢的。
当前回答
下载Apache Commons Lang并使用该方法
StringUtils.join(list)
StringUtils.join(list, ", ") // 2nd param is the separator.
当然,您可以自己实现它,但是它们的代码经过了充分的测试,可能是最好的实现。
我是Apache Commons库的忠实粉丝,我也认为它是对Java标准库的一个很好的补充。
其他回答
在Java 8或更高版本中:
String listString = String.join(", ", list);
如果列表不是String类型,则可以使用连接收集器:
String listString = list.stream().map(Object::toString)
.collect(Collectors.joining(", "));
下载Apache Commons Lang并使用该方法
StringUtils.join(list)
StringUtils.join(list, ", ") // 2nd param is the separator.
当然,您可以自己实现它,但是它们的代码经过了充分的测试,可能是最好的实现。
我是Apache Commons库的忠实粉丝,我也认为它是对Java标准库的一个很好的补充。
Android有一个TextUtil类,你可以使用http://developer.android.com/reference/android/text/TextUtils.html
String implode = TextUtils.join("\t", list);
如果您正在使用Eclipse Collections,则可以使用makeString()方法。
ArrayList<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("three");
Assert.assertEquals(
"one\ttwo\tthree",
ArrayListAdapter.adapt(list).makeString("\t"));
如果可以将数组列表转换为FastList,就可以摆脱适配器。
Assert.assertEquals(
"one\ttwo\tthree",
FastList.newListWith("one", "two", "three").makeString("\t"));
注意:我是Eclipse Collections的提交者。
循环遍历它并调用toString。没有什么神奇的方法,如果有的话,你认为它在被子下面除了循环之外会做什么?唯一的微优化是使用StringBuilder而不是String,即使这也不是一个巨大的胜利-连接字符串在幕后变成了StringBuilder,但至少如果您以这种方式编写它,您可以看到正在发生什么。
StringBuilder out = new StringBuilder();
for (Object o : list)
{
out.append(o.toString());
out.append("\t");
}
return out.toString();
推荐文章
- 在Java中使用UUID的最重要位的碰撞可能性
- 如何在Typescript中解析JSON字符串
- 转换列表的最佳方法:map还是foreach?
- 如何分割逗号分隔的字符串?
- Java字符串—查看字符串是否只包含数字而不包含字母
- Mockito.any()传递带有泛型的接口
- 在IntelliJ 10.5中运行测试时,出现“NoSuchMethodError: org.hamcrest. matcher . descripbemismatch”
- 使用String.split()和多个分隔符
- 用javascript检查输入字符串中是否包含数字
- Java数组有最大大小吗?
- 在Android中将字符串转换为Uri
- 从JSON生成Java类?
- 为什么java.util.Set没有get(int index)?
- Swing和AWT的区别是什么?
- 为什么Java流是一次性的?