package com.javarush.task.task22.task2208;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
/*
Формируем WHERE
*/
public class Solution {
public static void main(String[] args) {
Map<String, String> param = new HashMap<>();
param.put("name", "Ivanov");
param.put("country", "Ukraine");
param.put("city", "Kiev");
param.put("age", null);
System.out.println(getQuery(param));
}
public static String getQuery(Map<String, String> params) {
StringBuilder rez = new StringBuilder();
for (String key : params.keySet()) {
if (params.get(key) != null) {
rez.append(key + " = '" + params.get(key) + "'");
rez.append(" and ");
}
}
rez.delete(rez.length() - 4, rez.length());
return rez.toString();
}
}
Вывод: country = 'Ukraine' and city = 'Kiev' and name = 'Ivanov'
Не пойму почему вывод в другом порядке. Точнее скорее понимаю... думаю это связано с тем в как Хашмеп добавляет пары в память, в бакеты(но это не точно)). Но посмотрев правильный ответ не понял принципиальной разницы с моей версией кода...
package com.javarush.task.task22.task2208;
import java.util.LinkedHashMap;
import java.util.Map;
/*
Формируем WHERE
*/
public class Solution {
public static void main(String[] args) {
}
public static String getQuery(Map<String, String> params) {
StringBuilder rez = new StringBuilder();
for (String key : params.keySet()) {
if (params.get(key) != null) {
rez.append(key + " = '" + params.get(key) + "' ");
rez.append("and ");
}
}
rez.delete(rez.length() - 4, rez.length());
return rez.toString();
}
}