However, it does not meet the last requirement.
package com.codegym.task.task19.task1920;
/*
The richest
*/
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
public class Solution {
public static void main(String[] args) throws IOException {
String fileName = args[0];
ArrayList<String> list = new ArrayList<String>();
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line = bufferedReader.readLine();
while ( line != null)
{
list.add(line);
line = bufferedReader.readLine();
}
fileReader.close();
bufferedReader.close();
ArrayList<String> names = new ArrayList<String>();
ArrayList<Double> values = new ArrayList<Double>();
for(String ss : list)
{
String[] temp = ss.split(" ");
names.add(temp[0]);
values.add(Double.parseDouble(temp[1]));
}
TreeMap<String, Double> map = new TreeMap<String, Double>();
for(int i = 0; i<names.size(); i++)
{
if(!map.containsKey(names.get(i)))
{
map.put(names.get(i), values.get(i));
}
else
{
Double value = map.get(names.get(i)) + values.get(i);
map.put(names.get(i), value);
}
}
Map<String, Double> map2 = MapUtil.sortByValue(map);
Double richest = null;
ArrayList<String> list2 = new ArrayList<String>();
ArrayList<String> keys = new ArrayList<String>(map2.keySet());
for(int i=keys.size()-1; i>=0;i--){
if(richest == null)
richest = map2.get(keys.get(i));
}
for (Map.Entry<String, Double> pair : map2.entrySet())
{
String key = pair.getKey(); // Key
Double value = pair.getValue();
if(value.equals(richest));
{
list2.add(key);
}
}
Collections.sort(list2);
for(String ss: list2)
{
System.out.println(ss);
}
}
}