我有一个数组列表,我想把它完全输出为字符串。本质上,我想使用每个元素的toString按顺序输出它,每个元素由制表符分隔。有什么快速的方法吗?你可以循环遍历它(或删除每个元素),并将它连接到一个字符串,但我认为这将是非常缓慢的。
当前回答
到目前为止,这是一个相当古老的对话,apache commons现在在内部使用StringBuilder: http://commons.apache.org/lang/api/src-html/org/apache/commons/lang/StringUtils.html#line.3045
正如我们所知,这将提高性能,但如果性能是至关重要的,那么所使用的方法可能有些低效。尽管接口是灵活的,并且允许在不同的Collection类型之间保持一致的行为,但对于list(原始问题中的Collection类型)来说有些低效。
我这样做的基础是,我们会产生一些开销,这是我们可以通过简单地遍历传统for循环中的元素来避免的。相反,有一些额外的事情在幕后发生,检查并发修改、方法调用等。另一方面,增强的for循环将导致相同的开销,因为迭代器用于Iterable对象(List)。
其他回答
处理尾随分隔符的一种优雅方法是使用类分隔符
StringBuilder buf = new StringBuilder();
Separator sep = new Separator("\t");
for (String each: list) buf.append(sep).append(each);
String s = buf.toString();
类分隔符的toString方法返回分隔符,除了第一次调用。因此,在打印列表时,不需要前面的分隔符(在本例中是这样)。
如果你碰巧在Android上做这个,有一个很好的实用工具叫做TextUtils,它有一个.join(字符串分隔符,Iterable)方法。
List<String> list = new ArrayList<String>();
list.add("Item 1");
list.add("Item 2");
String joined = TextUtils.join(", ", list);
显然在Android之外没有太多用处,但我想把它添加到这个线程中…
对于使用制表符而不是使用println进行分离,您可以使用print
ArrayList<String> mylist = new ArrayList<String>();
mylist.add("C Programming");
mylist.add("Java");
mylist.add("C++");
mylist.add("Perl");
mylist.add("Python");
for (String each : mylist)
{
System.out.print(each);
System.out.print("\t");
}
也许不是最好的方式,但却是优雅的方式。
Arrays.deepToString (arrays . aslist(“测试”,“Test2”)
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
System.out.println(Arrays.deepToString(Arrays.asList("Test", "Test2").toArray()));
}
}
输出
(测试,Test2)
下载Apache Commons Lang并使用该方法
StringUtils.join(list)
StringUtils.join(list, ", ") // 2nd param is the separator.
当然,您可以自己实现它,但是它们的代码经过了充分的测试,可能是最好的实现。
我是Apache Commons库的忠实粉丝,我也认为它是对Java标准库的一个很好的补充。
推荐文章
- Intellij IDEA Java类在保存时不能自动编译
- 何时使用Mockito.verify()?
- 在maven中安装mvn到底做什么
- 不可变与不可修改的集合
- 如何在JSON中使用杰克逊更改字段名
- GSON -日期格式
- 如何从线程捕获异常
- 无法解析主机"<URL here>"没有与主机名关联的地址
- 如何在Java中打印二叉树图?
- String.format()在Java中格式化双重格式
- com.jcraft.jsch.JSchException: UnknownHostKey
- Java中的操作符重载
- 如何加速gwt编译器?
- 如何删除表中特定列的第一个字符?
- 在Hibernate中重新连接分离对象的正确方法是什么?