Map<Object, Object> data
) {
var first = true;
var builder = new StringBuilder();
for (Map.Entry<Object, Object> entry :
data.entrySet()) {
if (first) first = false;
else builder.append("&");
builder.append("=");
builder.append(URLEncoder.encode(
entry.getKey().toString(),
StandardCharsets.UTF_8
));
}
return HttpRequest.BodyPublishers.ofString(
builder.toString()
);
}
не пойму а в чем смысл if (first) first = false; и по сути непонятно если ферст что?
Что произойдет по коду, если будет не first?
боже, так форму собирать... смысл - первый элемент коллекции обработать по другому
Да человеку подумать самому)
не пойму вообще)
Ты по коду мне скажи. Ты же знаешь, что иф делает и все такое. Вот и отвечай)
это else builder.append("&");
Ну вот. Получается, когда false=true, этого не случится
а как по -твоему иф работает? и что у него в скобочках пишут?
А теперь скажи мне, ты url с параметрами видел хоть раз? Просмотрись)
сокращение ферст=труе
почему сокращение, если условие - это boolean
Помогите кто нибудь так я и не разобрался
ну если по коду непонятно, то запусти дебаггер и по шагам пройди метод и посмотри что и как меняется
Так ещё else есть
хорстман 2 том
Тебе не понятно что конкретно? 1)Синтаксис if(first) 2) зачем нужна такая конструкция в цикле? 3) зачем нужно так строить урл?
зачем тут нужен if непойму как он тут работает. в общем непойму иф, зачем этот тут ферст, по идее его сюда поставили что ферст будет всегда и чтобы его изменить в фоллса или зачем он нужен. ну судя по этой логике и не нужен был этот иф
Совет подебажить вроде выше был. Думаю он самый актуальный
Ты else не видишь там написан?
Ок, погнали. Строка запроса(ссылка которую я тебе кидал) передается в таком виде Протокол://хост:порт/ресурс?параметр1=значение&параметр2=значение2&параметр3=значение3... Обрати внимание на часть с параметрами(которая после вопроса) Если ты захочешь построить такую строку то можно параметры со значениями засунуть в мапу и потом их сджойнить поставив между ними амперсанд. Сделать это можно, например, пройдясь по всем элементам мапы в цикле и дописать в строку "&"+entry.key+"="+entry.value Но вот для первого элемента этот амперсанд мешает, поэтому автор завел переменную first и присвоил ей значение true, чтобы для первого элемента не добавлять амперсанд в стринг билдер, а просто переключить его значение в фолс, чтобы на последующих проходах амперсанд добавлялся в начало. В джаве у ифа в условии(скобочках) можно написать любое выражение с типом boolean, что позволяет сократить if(first==true) до if(first)(про это тебе тоже писали)
Ты что, рыбка? Все, к чему мы вчера пришли уже забыл?
Ну простым языком если мы добавляем первую пару ключ-значение, нам не нужно ставить перед ней "&". Но для всех последующих пар нам нужно добавлять этот символ перед ними.
ох блин спасибо большое)) вообще не мог понять)
да я смотрел смотрел все равно непонял)
В контексте того кода
Решай задачи из учебника, это правда помогает
Что значит "не понял"? Там простой иф и флаг, который можно переключать. Что конкретно не понял?
да книгу и leetcode решаю
Обсуждают сегодня