데이터베이스 작업 중에 쿼리 문자열을 작성하는 것을 알았고이 문자열에는 list / array / collection의 where-clause에 몇 가지 제한 사항이 있어야합니다. 다음과 같이 보일 것입니다 :
select * from customer
where customer.id in (34, 26, ..., 2);
문자열 모음이 있고이 문자열의 쉼표로 구분 된 목록을 하나의 문자열로 작성하려는 문제로이를 줄임으로써이를 단순화 할 수 있습니다.
내가 지금까지 사용한 접근법은 다음과 같습니다.
String result = "";
boolean first = true;
for(String string : collectionOfStrings) {
if(first) {
result+=string;
first=false;
} else {
result+=","+string;
}
}
그러나 이것은 당신이 매우 못생긴 것을 볼 수 있습니다. 특히 모든 SQL 쿼리와 같이 생성 된 문자열이 복잡 해지는 경우 첫 번째 모습에서 어떤 일이 발생하는지 알 수 없습니다.
당신의 (더) 우아한 방법은 무엇입니까?
참고 :이 답변은 11 년 전에 작성되었을 때 좋았지 만 이제는 Java 내장 클래스 만 사용하거나 유틸리티 라이브러리를 사용하여 한 줄로 더 명확하게 수행 할 수있는 훨씬 더 나은 옵션이 있습니다. 아래의 다른 답변을 참조하십시오.
문자열은 변경할 수 없으므로 코드에서 문자열을 변경하려는 경우 StringBuilder 클래스를 사용할 수 있습니다.
StringBuilder 클래스는 내용이 변경 될 때 더 많은 메모리를 할당하는 변경 가능한 String 객체로 볼 수 있습니다.
중복 된 후행 쉼표 를 처리하여 문제의 원래 제안을 훨씬 명확하고 효율적으로 작성할 수 있습니다 .
StringBuilder result = new StringBuilder();
for(String string : collectionOfStrings) {
result.append(string);
result.append(",");
}
return result.length() > 0 ? result.substring(0, result.length() - 1): "";
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다