반복문으로 문자열을 합칠 때 생기는 Warning 관련...
for 문이나 while 문을 활용하여,
문자열을 합칠 때 보통은 간단하게 += 연산자를 활용하여 수행한다.
그럼 보통 다음과 같은 warning을 보게 된다.
Reports String concatenation in loops. As every String concatenation copies the whole String, usually it is preferable to replace it with explicit calls to StringBuilder.append() or StringBuffer.append().
무슨말인지는 구글 번역 돌려보자! ㅋㅋㅋ
+= 사용시 문자열 전체를 지속적으로 복사하여 붙이기 때문에
붙이는 문자열이 길어질 수록 퍼포먼스가 떨어진다. 물론 리소스는 말할것도 없다.
아래와 같이 변경하자!
String sumStr = "";
for( String str : strArrList ) {
if( "".equals(sumStr.trim()) )
sumStr = str;
else
sumStr += ";" + str;
}
위와 같은 += 를 사용한 구조에서
다음과 같이 변경하면 warning은 사라진다.
final StringBuilder stringBuilder = new StringBuilder();
for( int i = 0; i < strArrList; i++ ) {
String str = strArrList.get(i);
if( i == 0 )
stringBuilder.append(str);
else {
String appendStr = ";" + str;
stringBuilder.append(appendStr);
}
}
String sumStr = stringBuilder.toString();