2011-11-01 3 views
5

間のスペースを削除するには、ベクタ出力に呼ばれるのtoString()メソッドこのオーバーライドのtoStringご存知のように要素

[foo, bar, item, item4] 

これはかなり基本的ですが、どのように私は要素間の空白を削除する(代わりにこれを得ることができます)?

[foo,bar,item,item4] 

すべて

EDITありがとう:リターンnom.toString()を置き換えます(」」、 "");解決策ではありません!

+0

あなたは**要素間のALL **スペースや空間のみを削除しますか?つまり、[John Smith、Jane Doe、Will Williams]の希望する出力は何でしょうか? –

答えて

4

をオーバーライドします。

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] 
2

はちょうどあなたのベクトルクラスをラップしてのtoStringをオーバーライドする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(); 
} 
+0

return nom.toString()。replace( ""、 "");私の要素の1つが「私は宇宙です」...私はそれを上書きしなければならないことを知っていますが、それを正しく得ることはできません。 – user1023021

+0

はより良い実装を提供しました –

3

オーバーライドは、Vectorをサブクラス化する場合にのみ意味があります。

あなたがいる場合は、次のようにあなたは、Apache CommonsのラングのStringUtils.joinを使用することができます。

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

あなたはプレーンなJavaで滞在したい場合は、glowcoderが最良の答えを持っています。

+0

私は、Apache Commonsを活用して、あなたのためにやることが大好きです。 – corsiKa

2

あなたがあなたの要素で", "を持っていないことが確実な場合は、試すことができます:

System.out.println(v.toString().replace(", ", ",")); 
関連する問題