这是一个相当简单的问题。当您打印出LinkedList时,如下所示:
System.out.println(list);
它打印出来,围绕方括号中的列表,如下所示:
[thing 1, thing 2, thing 3]
有没有方法可以在没有方括号的情况下将其打印出来?
答案 0 :(得分:21)
是 - 迭代列表并打印它(在每个之后使用逗号,但是最后一个元素)。但是,有一些工具可以提供帮助:
String result = Joiner.on(", ").join(list);
String result = StringUtils.join(list, ", ");
还有一点需要注意:不要依赖任何对象的.toString()
方法。它不是用于向用户显示对象,也不是用作预定义格式 - 主要用于调试目的。
答案 1 :(得分:5)
快速而肮脏的答案是:
String s = list.toString();
System.out.println(s.substring(1, s.length()-1));
答案 2 :(得分:2)
您可以继承LinkedList
并覆盖它的toString()
方法,但这似乎有些过分。相反,迭代它的元素并使用String
或StringBuilder
构建StringBuffer
(如果并发是一个问题)。
注意:强>
我建议你不要按照@Sean Owen提供的答案,因为这是依赖于实现的,因此很脆弱。
答案 3 :(得分:0)
这是LinkedList上toString()的默认实现。您可以扩展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
答案 4 :(得分:0)
从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(' ');
}
}
答案 5 :(得分:0)
StrBuilder builder = new StrBuilder(); // apache commons lang.
for (Object object : yourList)
{
builder.appendSeperator(", ");
builder.append(object.toString());
}
System.out.println(builder.toString());
答案 6 :(得分:0)
您可以获取.toString()
方法返回的字符串并删除第一个和最后一个字符,或者创建自己的列表类并覆盖.toString()
方法以遍历列表并打印元素而不用括号。或者你可以像匿名课一样:
List<String> list = new List<String>() {
public String toString() {
// Custom To String Stuff Here
}
};
当然,我太慢了。
答案 7 :(得分:0)
如果您进入 groovy ,则无需导入任何内容,只需执行以下操作:
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')
我=詹姆斯邦德
love = rock N roll
id = 007