Podczas pracy z bazami danych zauważyłem, że piszę ciągi zapytań i muszę w nich umieścić kilka ograniczeń w klauzuli where z listy / tablicy / kolekcji. Powinien wyglądać tak:
select * from customer
where customer.id in (34, 26, ..., 2);
Możesz to uprościć, redukując to do pytania, że masz kolekcję ciągów i chcesz utworzyć listę tych ciągów oddzielonych przecinkami w jednym ciągu.
Moje podejście, które stosowałem do tej pory, jest takie:
String result = "";
boolean first = true;
for(String string : collectionOfStrings) {
if(first) {
result+=string;
first=false;
} else {
result+=","+string;
}
}
Ale to jest, jak widać, bardzo brzydkie. Nie widać, co się tam dzieje na pierwszy rzut oka, zwłaszcza gdy konstruowane łańcuchy (jak każde zapytanie SQL) stają się skomplikowane.
Jaki jest Twój (bardziej) elegancki sposób?