Смотрите, в строках 62-67, первый эллемент записываеся о в цыкле сразу удваивается, но по идеи, он должен увеличится когда этот эллемент с таким же ключем всретится еще раз, а он увеличивается сразу же. Как мне реализовать строки 62-67???
package com.javarush.task.task19.task1920;
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/*
Самый богатый
В метод main первым параметром приходит имя файла.
В этом файле каждая строка имеет следующий вид:
имя значение
где [имя] - String, [значение] - double. [имя] и [значение] разделены пробелом.
Для каждого имени посчитать сумму всех его значений.
Вывести в консоль имена в алфавитном порядке, у которых максимальная сумма.
Имена разделять пробелом либо выводить с новой строки.
Закрыть потоки.
Пример входного файла:
Петров 0.501
Иванов 1.35
Петров 0.85
Пример вывода:
Петров
Требования:
1. Программа НЕ должна считывать данные с консоли.
2. Программа должна считывать содержимое файла (используй FileReader).
3. Поток чтения из файла (FileReader) должен быть закрыт.
4. Программа должна выводить в консоль имена, у которых максимальная сумма.
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(args[0]));
ArrayList<String> lines = new ArrayList<>();
String line;
while ((line = reader.readLine()) != null) {
lines.add(line);
}
reader.close();
HashMap<String, Double> map = new HashMap<>();
for(String s : lines) {
String[] wordsAfterSplit = s.split(" ");
String name = wordsAfterSplit[0];
double value = Double.parseDouble(wordsAfterSplit[1]);
map.put(name, value);
for (Map.Entry<String, Double> entry : map.entrySet()) {
if (entry.getKey().equals(name)) {
map.put(name, value + entry.getValue());
}
}
}
String name = null;
double value = Double.MIN_VALUE;
for (Map.Entry<String, Double> entry : map.entrySet()) {
if (entry.getValue() > value) {
name = entry.getKey();
value = entry.getValue();
}
}
ArrayList<String> list = new ArrayList<>();
list.add(name);
for (Map.Entry<String, Double> entry : map.entrySet()) {
if (entry.getValue() == value) {
boolean isTrue = false;
for (String s : list) {
if (!s.equals(entry.getKey())) {
isTrue = true;
break;
}
}
if (isTrue) {
list.add(entry.getKey());
}
}
}
Collections.sort(list);
for (String s : list) {
System.out.println(s + " ");
}
}
}