#java #maps
#java #Карты
Вопрос:
ImmutableMap.Builder<String, String> p = ImmutableMap.builder();
p.put("item1","error1");
p.put("item2","error1");
p.put("item3","error3");
p.put("item4","error3");
p.put("item5","error3");
p.put("item6","error4");
...
Map<String, String> map = p.build();
Моя цель — распечатать следующее:
<number of occurrences of an error> occurrences of <error name>: <the items that have that error>
<number of occurrences of an error> occurrences of <error name>: <the items that have that error>
<"..." if there are more than 2 types of errors>
Кроме того, если более 2 элементов имеют одну и ту же ошибку, он должен распечатать только имена первых 2 элементов с этой ошибкой.
Для приведенного выше кода он должен распечатать:
2 occurrences of error1: item1, item2
3 occurrences of error3: item3, item4, ...
...
Я пытаюсь исправить проблему в проекте с открытым исходным кодом, с которым я столкнулся, но у меня нет большого опыта работы с картами. Любая помощь будет принята с благодарностью.
Комментарии:
1. опубликовал ответ, посмотрите, поможет ли это.
Ответ №1:
public static void main(String[] args) throws IOException {
Map<String, String> p = new HashMap<String, String>();
p.put("item1","error1");
p.put("item2","error1");
p.put("item3","error3");
p.put("item4","error3");
p.put("item5","error3");
p.put("item6","error4");
Map<String, String> resultMap = new HashMap<String, String>();
for(Map.Entry<String, String> entry: p.entrySet()) {
if(resultMap.containsKey(entry.getValue())) {
String result = resultMap.get(entry.getValue()) ", " entry.getKey();
if(result.split(",").length <= 2) { //For less than 2 Occurrence
resultMap.put(entry.getValue(), result);
}else {
resultMap.put(entry.getValue(), resultMap.get(entry.getValue()) ", ...");
}
}else {
resultMap.put(entry.getValue(), entry.getKey());
}
}
//Printing the result Map
for(Map.Entry<String, String> entry: resultMap.entrySet()) {
System.out.println(entry.getKey() " -> " entry.getValue());
}
}
вывод
error4 -> item6
error1 -> item2, item1
error3 -> item4, item3, ...