这是一个相当简单的问题。当你打印出一个LinkedList,像这样:Java:打印没有方括号的LinkedList?
System.out.println(list);
它打印出来,周围像这样的方括号中的列表:
[thing 1, thing 2, thing 3]
有没有一种方法,我可以把它打印出来,而不广场括号?
这是一个相当简单的问题。当你打印出一个LinkedList,像这样:Java:打印没有方括号的LinkedList?
System.out.println(list);
它打印出来,周围像这样的方括号中的列表:
[thing 1, thing 2, thing 3]
有没有一种方法,我可以把它打印出来,而不广场括号?
是 - 迭代列表并打印它(每个之后都有逗号,但最后一个元素)。不过,也有utils的帮助:
String result = Joiner.on(", ").join(list);
String result = StringUtils.join(list, ", ");
还有一注:不依赖于任何对象的方法.toString()
。它并不意味着向用户显示对象,或者用作预定义的格式 - 主要用于调试目的。
快速和肮脏的答案是:
String s = list.toString();
System.out.println(s.substring(1, s.length()-1));
由于包含的是 “快速和肮脏的” 免责声明,我不会降低你的答案。这就是说,这正是我们应该阻止其他开发者做的事情的类型。 –
这是的toString()上的LinkedList的默认实现。您可以扩展LinkedList以提供您自己的实现或使用组合,并只实现java.util.List接口。
public class MyLinkedList<E> implements List<E>
{
private final List<E> delegate;
public MyLinkedList(List<E> list)
{
delegate = list;
}
/**
* @return see overriden class or implemented interface
* @see java.lang.Object#toString()
*/
@Override
public String toString()
{
return "My special toString() method";
}
// implement rest of the java.util.List interface
你可以继承LinkedList
并重写它的toString()
方法,但似乎有点过分。相反,遍历它的元素并使用StringBuilder
或StringBuffer
(如果并发是一个问题)构造String
。
注:
我建议你不要遵循@Sean Owen提供的答案,因为这是实现相关的,因此,脆弱的。
从AbstractCollection.java
修改:
/*
* @return a string representation of a collection
*/
public static final String collectionToString(Collection c) {
Iterator<E> it = c.iterator();
if (! it.hasNext())
return "";
StringBuilder sb = new StringBuilder();
for (;;) {
E e = it.next();
sb.append(e == c ? "(this Collection)" : e);
if (! it.hasNext())
return sb.toString();
sb.append(',').append(' ');
}
}
StrBuilder builder = new StrBuilder(); // apache commons lang.
for (Object object : yourList)
{
builder.appendSeperator(", ");
builder.append(object.toString());
}
System.out.println(builder.toString());
你可以抓住由.toString()
方法返回的字符串并删除第一个和最后一个字符,或使自己的列表类并覆盖.toString()
方法来遍历列表并打印没有括号的元素。或者你可以像一个匿名类:
List<String> list = new List<String>() {
public String toString() {
// Custom To String Stuff Here
}
};
当然,我太慢了。
如果你到常规,就没有必要进口什么,只是做:
list = ["thing 1", "thing 2", "thing 3"]
println list.collect { i -> "$i" }.join(', ')
件事1,东西2,东西3
同图集合:
map = [I:"James Bond", love:"rock N roll", id:"007"]
println map.collect { k,v -> "$k = $v" }.join('\n')
I =詹姆斯·邦德
爱=摇滚乐
ID = 007
这个需要+2的实用工具和'toString()'位。 –
什么是StringUtils的导入? – Blackvein
没关系我找到了:)谢谢你们! – Blackvein