HashMap<String, String> map = new HashMap<>();
map.put("name", "Ivanov");
map.put("country", "Ukraine");
map.put("city", "Kiev");
map.put("age", null);
StringBuilder result = new StringBuilder();
for (Map.Entry<String, String> entry : map.entrySet()) {
if (!(entry.getValue() == null)){
result.append(String.format("%s = '%s' and ",entry.getKey(), entry.getValue()));
}
}
System.out.println(result.substring(0, result.length() - 4).toString());
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Вывод в консоль : country = 'Ukraine' and city = 'Kiev' and name = 'Ivanov'
Вопрос такой: Почему пара name = 'Ivanov' вывелась последними? они ведь первыми были!
Заранее спасибо!
Максим Ананьев
41 уровень
Почему name выводит порследним?
Решен
Комментарии (10)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Максим Ананьев
17 мая 2021, 10:22решение
length() - 5
+2
Максим Ананьев
17 мая 2021, 10:23
0
Максим Ананьев
17 мая 2021, 09:52
Map<String, String> map = new LinkedHashMap<>();
map.put(null,null);
map.put(null,null);
map.put(null,null);
map.put(null,null);
map.put(null,null);
map.put(null,null);
map.put(null,null);
StringBuilder result = new StringBuilder("");
for (String entry : map.keySet()) {
String value = map.get(entry);
if (!(value == null) && (entry !=null)){
result.append(String.format("%s = '%s' and ",entry, value));
}
}
if (result.length() > 0){
System.out.println(result.substring(0, result.length() - 4).toString());
}else {
System.out.println(result);
}
Вывод пустая строка, до этого если везде были null возникала ошибка
0
Максим Ананьев
17 мая 2021, 09:34
map.put("aaa",null);
map.put(null, null);
map.put("name", "Ivanov");
map.put("country", "Ukraine");
map.put(null, "Russia");
map.put("street", null);
map.put("city", "Kiev");
map.put("age", null);
map.put(null,"13");
map.put(null,null);
Вывод : name = 'Ivanov' and country = 'Ukraine' and city = 'Kiev'
0
hidden #2322530
17 мая 2021, 09:14
потому что это HashMap, он не гарантирует порядок добавления/вывода элементов.
нужен порядок, используй LinkedHashMap
0
Максим Ананьев
17 мая 2021, 09:24
спасибо
0
Максим Ананьев
17 мая 2021, 09:27
HashMap<String, String> map = new LinkedHashMap<>();
map.put("name", "Ivanov");
map.put("country", "Ukraine");
map.put("city", "Kiev");
map.put("age", null);
map.put(null,"13");
StringBuilder result = new StringBuilder();
for (String entry : map.keySet()) {
String value = map.get(entry);
if (!(value == null) && (entry !=null)){
result.append(String.format("%s = '%s' and ",entry, value));
}
}
System.out.println(result.substring(0, result.length() - 4).toString());
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Вывод: name = 'Ivanov' and country = 'Ukraine' and city = 'Kiev'
0
Максим Ананьев
17 мая 2021, 09:28
А валидатор не принимает(
0
Максим Ананьев
17 мая 2021, 09:30
map.put(null,null); тоже добавил
0
hidden #2322530
17 мая 2021, 11:28полезный
так нельзя.
либо:
либо
+1