2012-07-18 5 views
2

내가 아래에이 기본 코드와 함께 고군분투하는 동안의 마지막 문자의 제거,기본 문자열 조작, 루프

어떻게 문자열에 추가되는 ","마지막 쉼표를 방지 않습니다.

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

+1

StringBuilder 내를 사용하는 대신에 문자열을 추가하는 것이 좋습니다. – Chris911

답변

6

이드는 실제로는 다른 방법으로 사용합니다. id는 쉼표를 앞에 붙이면됩니다.

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

이유는 마지막 경우보다 첫 번째 경우를 감지하는 것이 훨씬 간단하기 때문입니다.

+0

팁 Jon을 주셔서 감사합니다. .it 해결했습니다 ... – ashwinsakthi

2

내가 할 것 :

String delimiter = ""; 

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

나는 이것을 너무 좋아합니다. 나는 얼마나 효율적인 것들이 배경에 있는지 전혀 알지 못하지만, 매번 시간이 갈수록 구분 기호 변수에 값을 할당하는 것이 더 비쌉니다. 첫 번째 요소에 있는지 여부를 확인하기 위해 매 번 부울 변수를 검사하는 것보다 더 낫지 않습니까? 그냥 생각. –

+0

방금 ​​테스트를했는데 할당이 빠르다고 생각됩니다. 물론 List 크기가 커짐에 따라 알 수 있습니다. 대부분의 경우 문제가되지 않으므로 두 가지 솔루션 모두 좋습니다. –

+0

흥미롭고, 잘 알고 있습니다. 나는 최적화 하하에서 빨아. –