Странно себя ведет программа.
Господа, прошу разъяснить.
for(Map.Entry<String, Double> entry:map.entrySet()){
if(entry.getValue()==d){
list.add(entry.getKey());
}
}
В этом цикле в список list почему то добавляется только одна фамилия. При этом значения в файле указаны верно т.к. если изменить значение для добавляемой фамилии берется другая фамилия с таким значением и добавляется в list но почему то только одна, хотя в тестовом файле несколько фамилий с одинаковой суммой 6.451
Тестовый файл:
Петров 2
Сидоров 6
Иванов 1.35
Петров 3.1
Петров 0.501
Иванов 1.35
Петров 0.85
Абакумов 6.451
Гекин 6.451package com.javarush.task.task19.task1920;
/*
Самый богатый
*/
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.*;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader freader = new BufferedReader(new FileReader(args[0]));
TreeMap<String, Double> map = new TreeMap<>();
ArrayList<String> list = new ArrayList<>();
Double d = 0.0;
while (freader.ready()){
String[] mas = freader.readLine().split(" ");
if(map.containsKey(mas[0])){
d = map.get(mas[0]);
d = d+Double.parseDouble(mas[1]);
map.remove(mas[0]);
map.put(mas[0],d);
}else{
map.put(mas[0], Double.parseDouble(mas[1]));
}
}
freader.close();
d=0.0;
for(Map.Entry<String, Double> entry:map.entrySet()){
if(entry.getValue()>d){
d=entry.getValue();
}
}
for(Map.Entry<String, Double> entry:map.entrySet()){
if(entry.getValue()==d){
list.add(entry.getKey());
}
}
Collections.sort(list);
for(String s:list){
System.out.println(s);
}
}
}