Формируем WHERE

  • 12
  • Недоступна
Сформируй часть запроса WHERE используя StringBuilder. Если значение null, то параметр не должен попадать в запрос. Пример: {"name", "Ivanov", "country", "Ukraine", "city", "Kiev", "age", null} Результат: "name = 'Ivanov' and country = 'Ukraine' and city = 'Kiev'"
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (159)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Максим Дудин
23 уровень, Калининград
28 апреля, 14:55
Ещё одно условие.. Метод getQuery должен возвращать пустую строку, если все значения равны null хотя ниже об это уже писали
Евгения
25 уровень, Минск
24 апреля, 12:46
порядок - имя, потом страна, потом город и т.д. не проверяется
CilitBang
25 уровень
29 марта, 10:34
Сделал со 2го раза, потому что поверил человеку в комментариях, что в случае всех null вывод должен быть "". Обман, чтобы набрать классы. РЕШЕНИЕ
Dark_Side Android Developer в Harman (Samsung)
16 марта, 14:55
К этой задаче неплохо бы тесты прикрутить) ну типа вызывать getQuery() и передавать в него карту, а то чет смутно понятно, в каком все таки именно формате и порядке там лежат элементы
Сергей
25 уровень, Киев
4 марта, 20:35
А я вот так строку возвращал
sb.substring(0, sb.lastIndexOf("and") - 1)
Е К
33 уровень, Краснодар
24 февраля, 21:16
Кто знает в чём разница между capacity и length у экземпляра StringBuilder? Запарился малость - удалял последний " end " объекта с помощью capacity и получал нежданчики в виде исключений по длине...
Дмитрий Яковенко
34 уровень, Москва
8 марта, 08:59
StringBuilder - это по факту массив char (char[] value). У этого массива есть некий размер - capacity - сколько всего в него можно положить символов. А length - это сколько в нём реально сейчас лежит символов.
Е К
33 уровень, Краснодар
9 марта, 08:28
Спасибо! Получается, что SB по структуре - это что-то очень похожее на ArrayList<String(или Character)>
Andreas
41 уровень
21 февраля, 15:45
public static String getQuery(Map<String, String> params) {
        StringBuilder s = new StringBuilder();
        for (Map.Entry<String,String> i : params.entrySet()) {
            if(i.getValue() != null) {
                s.append(String.format("%s = '%s' and ", i.getKey(), i.getValue()));
            }
        }
        s.delete(s.length() - 5, s.length() - 1);
        return s.toString();
    }
Все работает, но валик не принимает. Помогите)
Е К
33 уровень, Краснодар
24 февраля, 21:06
Проверь что у тебя возвращает метод, если все параметры = null. Чтобы валя принял, нужно чтобы в таком случае вернул пустую строку - ""
Eleonora
35 уровень, Москва
13 марта, 14:49
Спасибо!!!!!!!!
Иван Сергеевич Железнодорожник в РЖД
13 апреля, 08:55
почему ключ на null не проверяем? в решении автора тоже ключ не проверяется, и на тестах если загнать нулл в качестве ключа в массив, то метод нормально отрабатывает, хотя вроде как не должен
Владислав Дуплянкин
30 уровень, Сан-Франциско
24 января, 22:19
Попался на невидимом условии валидтора: если все значения карты пустые, то возвращать пустую строку "" , а я возвращал null, валидатор не принимал с ошибкой: "Метод getQuery должен возвращать строку сформированную по правилам описанным в условии задачи."
Виталий
26 уровень, Санкт-Петербург
22 января, 08:41
Попался на пробеле в конце строки
Иван
31 уровень, Рязань
20 января, 07:56
Хоть раз было упомянуто что можно в foreach по keySet???