覆盖toString以删除元素之间的空格

时间:2011-11-01 18:36:47

标签: java override tostring space

如您所知,在Vector上调用的toString()方法输出此

[foo, bar, item, item4]

这是非常基本的但是,我怎么能得到它(去除元素之间的空格)?

[foo,bar,item,item4]

谢谢大家

编辑:return nom.toString()。replace(“”,“”);不是解决方案!

4 个答案:

答案 0 :(得分:4)

包装你的vector类并覆盖toString。

import java.util.*;
class AwesomeVector<E> extends Vector<E> {

    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for(int i = 0; i < size(); i++) {
           if(i != 0) sb.append(","); 
           sb.append(get(i));
        }
        sb.append("]");
        return sb.toString();
    }

    public static void main(String[] args) {
        AwesomeVector<String> av = new AwesomeVector<String>();
        av.add("This");
        av.add("is");
        av.add("a test");
        System.out.println(av.toString());
    }

}


C:\Documents and Settings\glowcoder\My Documents>javac AwesomeVector.java

C:\Documents and Settings\glowcoder\My Documents>java AwesomeVector
[This,is,a test]

答案 1 :(得分:3)

如果你是Vector的子类,那么覆盖才有意义。

如果您是,那么您可以使用Apache Commons Lang的StringUtils.join,如下所示:

@Override
public String toString() {
    return "[" + StringUtils.join(this, ",") + "]";
}

如果你想留在普通的Java中,那么glowcoder就是最好的答案。

答案 2 :(得分:2)

只需扩展Vector类并覆盖toString()

@Override
public String toString() {
    StringBuffer sb = new Stringbuffer("[");

    for(int i=0; i < elementCount ;i++ ){
         sb.append(elementData.toString());
         if(i!= elementCount -1){
             sb.append(",");
         }
    } 

    sb.append("]");
    return sb.toString();
}

答案 3 :(得分:2)

如果您确定元素中没有", ",可以尝试:

System.out.println(v.toString().replace(", ", ","));