我有一个数组列表,我想把它完全输出为字符串。本质上,我想使用每个元素的toString按顺序输出它,每个元素由制表符分隔。有什么快速的方法吗?你可以循环遍历它(或删除每个元素),并将它连接到一个字符串,但我认为这将是非常缓慢的。
当前回答
我看到相当多的例子依赖于额外的资源,但似乎这将是最简单的解决方案:(这是我在我自己的项目中使用的)这基本上只是从一个数组列表转换到一个数组,然后再转换到一个列表。
List<Account> accounts = new ArrayList<>();
public String accountList()
{
Account[] listingArray = accounts.toArray(new Account[accounts.size()]);
String listingString = Arrays.toString(listingArray);
return listingString;
}
其他回答
循环遍历它并调用toString。没有什么神奇的方法,如果有的话,你认为它在被子下面除了循环之外会做什么?唯一的微优化是使用StringBuilder而不是String,即使这也不是一个巨大的胜利-连接字符串在幕后变成了StringBuilder,但至少如果您以这种方式编写它,您可以看到正在发生什么。
StringBuilder out = new StringBuilder();
for (Object o : list)
{
out.append(o.toString());
out.append("\t");
}
return out.toString();
这是一个相当老的问题,但我想我不妨添加一个更现代的答案-使用来自Guava的Joiner类:
String joined = Joiner.on("\t").join(list);
将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());
只是永远不要自己建造轮子,不要使用循环这一行任务。
你可以使用正则表达式。这是最简洁的了
System.out.println(yourArrayList.toString().replaceAll("\\[|\\]|[,][ ]","\t"));
对于使用制表符而不是使用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");
}
推荐文章
- 在流中使用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时停止工作