2012-07-18 20 views
2

我用下面這個基本的代碼去除掙扎的最後一個字符,基本字符串操作,在While循環

如何防止最後一個逗號「」被附加到字符串。

String outScopeActiveRegionCode=""; 

    List<String> activePersons=new ArrayList<String>(); 

    HashSet<String> outScopeActiveRegionCodeSet=new HashSet<String>(); 

    for (String person : activePersons) { 

     outScopeActiveRegionCodeSet.add(person); 

    } 
     Iterator itr = outScopeActiveRegionCodeSet.iterator(); 

      while(itr.hasNext()){ 
       outScopeActiveRegionCode+=itr.next(); 
       outScopeActiveRegionCode+=","; 
      } 
+1

可能是你可以做附加一個逗號之前的另一個hasNext() – kosa 2012-07-18 15:50:27

+1

考慮使用StringBuilder的,而不是追加到一個字符串。 – Chris911 2012-07-18 15:58:52

回答

6

我實際上是這樣做的另一種方式,ID在所有情況之前追加逗號,除了第一個,它更容易。

boolean isFirst = true; 
while(itr.hasNext()) { 
    if(isFirst) { 
     isFirst = false; 
    } else { 
     outScopeActiveRegionCode+=","; 
    } 
    outScopeActiveRegionCode+=itr.next(); 
} 

原因是檢測第一種情況要比最後一種情況要簡單得多。

+0

感謝您的提示Jon..it制定出來... – ashwinsakthi 2012-07-18 15:58:35

2

我會做:

String delimiter = ""; 

while(itr.hasNext()){ 
    outScopeActiveRegionCode += delimiter; 
    outScopeActiveRegionCode += itr.next(); 
    delimiter = ","; 
} 
+0

我也喜歡這個,我不得不承認我不知道在後臺有多高效的東西,但每次分配變量的分隔符變得更昂貴比每次檢查一個布爾變量來查看你是否在第一個元素上?只是一個想法。 – 2012-07-18 16:05:57

+0

我剛做了一些測試,看起來分配速度更快。當然,隨着列表大小的增加,您只會注意到它。對於大多數情況,這並不重要,所以這兩種解決方案都很好。 – 2012-07-18 17:21:17

+0

有趣的,很高興知道。我吮吸優化哈哈。 – 2012-07-18 17:36:17