我有一个数组列表,我想把它完全输出为字符串。本质上,我想使用每个元素的toString按顺序输出它,每个元素由制表符分隔。有什么快速的方法吗?你可以循环遍历它(或删除每个元素),并将它连接到一个字符串,但我认为这将是非常缓慢的。
当前回答
处理尾随分隔符的一种优雅方法是使用类分隔符
StringBuilder buf = new StringBuilder();
Separator sep = new Separator("\t");
for (String each: list) buf.append(sep).append(each);
String s = buf.toString();
类分隔符的toString方法返回分隔符,除了第一次调用。因此,在打印列表时,不需要前面的分隔符(在本例中是这样)。
其他回答
循环遍历它并调用toString。没有什么神奇的方法,如果有的话,你认为它在被子下面除了循环之外会做什么?唯一的微优化是使用StringBuilder而不是String,即使这也不是一个巨大的胜利-连接字符串在幕后变成了StringBuilder,但至少如果您以这种方式编写它,您可以看到正在发生什么。
StringBuilder out = new StringBuilder();
for (Object o : list)
{
out.append(o.toString());
out.append("\t");
}
return out.toString();
你可以使用正则表达式。这是最简洁的了
System.out.println(yourArrayList.toString().replaceAll("\\[|\\]|[,][ ]","\t"));
将List更改为可读且有意义的String确实是每个人都可能遇到的一个常见问题。
案例1。如果你有apache的StringUtils在你的类路径(从rogerdpack和Ravi Wallau):
import org.apache.commons.lang3.StringUtils;
String str = StringUtils.join(myList);
情况2。如果你只想使用JDK(7)中的方法:
import java.util.Arrays;
String str = Arrays.toString(myList.toArray());
只是永远不要自己建造轮子,不要使用循环这一行任务。
下载Apache Commons Lang并使用该方法
StringUtils.join(list)
StringUtils.join(list, ", ") // 2nd param is the separator.
当然,您可以自己实现它,但是它们的代码经过了充分的测试,可能是最好的实现。
我是Apache Commons库的忠实粉丝,我也认为它是对Java标准库的一个很好的补充。
也许不是最好的方式,但却是优雅的方式。
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)
推荐文章
- Intellij IDEA Java类在保存时不能自动编译
- 何时使用Mockito.verify()?
- 在maven中安装mvn到底做什么
- 不可变与不可修改的集合
- 如何在JSON中使用杰克逊更改字段名
- GSON -日期格式
- 如何从线程捕获异常
- 无法解析主机"<URL here>"没有与主机名关联的地址
- 如何在Java中打印二叉树图?
- String.format()在Java中格式化双重格式
- com.jcraft.jsch.JSchException: UnknownHostKey
- Java中的操作符重载
- 如何加速gwt编译器?
- 如何删除表中特定列的第一个字符?
- 在Hibernate中重新连接分离对象的正确方法是什么?