Переопределить toString для удаления пробелов между элементами - PullRequest
5 голосов
/ 01 ноября 2011

Как вы знаете, метод toString (), вызываемый для Vector, выдает это

[foo, bar, item, item4]

Это довольно просто, но как я могу получить это вместо этого (удаляя пробелы между элементами)?

[foo,bar,item,item4]

Спасибо всем

РЕДАКТИРОВАТЬ: вернуть nom.toString (). Replace ("", "");это не решение!

Ответы [ 4 ]

4 голосов
/ 01 ноября 2011

Оберните ваш векторный класс и переопределите 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]
3 голосов
/ 01 ноября 2011

Переопределение имеет смысл, только если вы используете подклассы Vector.

Если да, то вы можете использовать Apache Commons Lang's StringUtils.join следующим образом:

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

Если вы хотите остаться на простой Java, то у вас есть лучший ответ.

2 голосов
/ 01 ноября 2011

Если вы уверены, что в ваших элементах нет ", ", вы можете попробовать:

System.out.println(v.toString().replace(", ", ","));
2 голосов
/ 01 ноября 2011

Просто расширьте класс 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();
}
...