我有一个数组列表,我想把它完全输出为字符串。本质上,我想使用每个元素的toString按顺序输出它,每个元素由制表符分隔。有什么快速的方法吗?你可以循环遍历它(或删除每个元素),并将它连接到一个字符串,但我认为这将是非常缓慢的。
当前回答
你可以使用正则表达式。这是最简洁的了
System.out.println(yourArrayList.toString().replaceAll("\\[|\\]|[,][ ]","\t"));
其他回答
我看到相当多的例子依赖于额外的资源,但似乎这将是最简单的解决方案:(这是我在我自己的项目中使用的)这基本上只是从一个数组列表转换到一个数组,然后再转换到一个列表。
List<Account> accounts = new ArrayList<>();
public String accountList()
{
Account[] listingArray = accounts.toArray(new Account[accounts.size()]);
String listingString = Arrays.toString(listingArray);
return listingString;
}
大多数Java项目通常都有apache-commons lang可用。StringUtils.join()方法非常好,有几种风格可以满足几乎所有需求。
public static java.lang.String join(java.util.Collection collection,
char separator)
public static String join(Iterator iterator, String separator) {
// handle null, zero and one elements before building a buffer
Object first = iterator.next();
if (!iterator.hasNext()) {
return ObjectUtils.toString(first);
}
// two or more elements
StringBuffer buf =
new StringBuffer(256); // Java default is 16, probably too small
if (first != null) {
buf.append(first);
}
while (iterator.hasNext()) {
if (separator != null) {
buf.append(separator);
}
Object obj = iterator.next();
if (obj != null) {
buf.append(obj);
}
}
return buf.toString();
}
参数: collection -要连接在一起的值的集合,可以为空 Separator -要使用的分隔符 返回:连接的字符串,如果为空 空迭代器输入 自: 2.3
处理尾随分隔符的一种优雅方法是使用类分隔符
StringBuilder buf = new StringBuilder();
Separator sep = new Separator("\t");
for (String each: list) buf.append(sep).append(each);
String s = buf.toString();
类分隔符的toString方法返回分隔符,除了第一次调用。因此,在打印列表时,不需要前面的分隔符(在本例中是这样)。
在Java 8或更高版本中:
String listString = String.join(", ", list);
如果列表不是String类型,则可以使用连接收集器:
String listString = list.stream().map(Object::toString)
.collect(Collectors.joining(", "));
如果你碰巧在Android上,你还没有使用杰克(例如,因为它仍然缺乏支持即时运行),如果你想要更多的控制结果字符串的格式(例如,您想使用换行符分隔的元素),并使用/想使用StreamSupport库(在Java 7使用流或更早版本的编译器),你可以使用这样的(我把这个方法ListUtils类):
public static <T> String asString(List<T> list) {
return StreamSupport.stream(list)
.map(Object::toString)
.collect(Collectors.joining("\n"));
}
当然,确保在列表对象的类上实现toString()。
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- Printf与std::字符串?
- 在Jar文件中运行类
- 带参数的可运行?
- 不区分大小写的“in”
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- 如何在PHP中截断字符串最接近于一定数量的字符?
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作