2014-03-28 78 views
1

我在我的代碼中使用了一個包含一些整數的集合。我的代碼中某處需要將這些數字作爲字符串,以便函數可以對它們進行操作。 (該功能置換它得到一個字符串作爲輸入參數。)使用toString()進行設置

當我的設置是一樣的東西:

Set<Integer> U= new TreeSet<Integer>(); 
U.addAll(Arrays.asList(1,2,3,4,5,6,7,8,9)); 

我需要一個字符串的9長度在它具有以下九個數字。但是,通過使用

String str=U.toString(); 

海峽將[1, 2, 3, 4, 5, 6, 7, 8, 9]與27

長度反正是有隻有號碼存儲到字符串沒有[和,和空間?

+0

你爲什麼要?如果它只是一系列的數字,那麼你怎麼知道實際值是什麼?一個1到9的數組會給你123456789的結果,但是包含三個值123,456和789的數組也是如此。你能保證該數組只有一個數字值嗎? 「我的代碼中的某處需要將這些數字作爲字符串,以便函數可以對它們進行操作。」聽起來像這個功能需要改變,聽起來不像它設計得很好。 –

+0

另一個函數獲取一個字符串並計算是排列。它實際上是一個非常簡單的遞歸函數,但輸入必須是String。主要目的是計算這些數字的排列。 –

+0

所以這個函數是建立在輸入始終是由一個數字的數字組成的字符串的基礎上的? –

回答

0

你可以試試這個:

Set<Integer> U = new TreeSet<Integer>(); 
U.addAll(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9)); 

StringBuilder sb = new StringBuilder(U.size()); 
for (int a : U) 
    sb.append(a); 

System.out.println(sb); 
 
123456789 

的Java 8做法:

Iterable<String> iter = U.stream().map(Object::toString)::iterator; 
System.out.println(String.join("", iter)); 
 
123456789 
1

根據需要創建TreeSet的子類並覆蓋toString()方法!

1

@Override擴展類中的toString。 for循環簡單應該這樣做

1

的一種方法是創建自己的方法。您可以循環訪問Set,並使用StringBuilder構造String

public String myToString() { 
    StringBuilder sb = new StringBuilder(); 

    for (Integer i : U) { 
     sb.append(i); 
    } 

    return sb.toString(); 
} 

的另一種方法將被重寫toString()方法。實施將是上面那樣的相似:

@Override 
public String toString() { 
    // ... 
} 
1

您需要實現它自己:

public static String setToString(Set<Integer> set) { 
    StringBuilder sb = new StringBuilder(); 
    for (Integer i : set) { 
     sb.append(i); 
    } 
    return sb.toString(); 
} 
0

簡單的使用:

System.out.println(Arrays.toString(U.toArray()));