這是一個相當簡單的問題。當你打印出一個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