Самый сложный способ создания разделенных запятыми строк из коллекции / массива / списка? - PullRequest
97 голосов
/ 15 октября 2008

Во время моей работы с базами данных я заметил, что я пишу строки запросов, и в эти строки я должен наложить несколько ограничений в предложении where из списка / массива / коллекции. Должно выглядеть так:

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-запрос) усложняется.

Каков ваш (более) элегантный способ?

Ответы [ 31 ]

0 голосов
/ 02 декабря 2014

Список токенов = новый ArrayList (результат); окончательный построитель StringBuilder = new StringBuilder ();

    for (int i =0; i < tokens.size(); i++){
        builder.append(tokens.get(i));
        if(i != tokens.size()-1){
            builder.append(TOKEN_DELIMITER);
        }
    }

builder.toString ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...