что не так вроде выводит в алфавитном порядке от максимума до минимума по значению
package com.javarush.task.task19.task1920;
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 {
Map<String,Double>map = new TreeMap<>();
List<Person>list = new ArrayList<>();
try(BufferedReader reader = new BufferedReader(new FileReader("C:\\Users\\user\\Documents\\myFile.txt"))){
while (reader.ready()){
String[] strings = reader.readLine().split(" ");
double d = Double.parseDouble(strings[1]);
Set<String>set = map.keySet();
for (String key:set){
if (key.equals(strings[0])){
double d1 = map.get(key);
d += d1;
}
}
map.put(strings[0], d);
}
}
for (Map.Entry<String,Double>entry: map.entrySet()){
list.add(new Person(entry.getKey(), entry.getValue()));
}
Collections.sort(list,(d1,d2)->Double.compare(d2.getValue(),d1.getValue()));
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).getName());
}
}
public static class Person{
String name;
double value;
public Person(String name,double value){
this.name = name;
this.value = value;
}
public String getName(){
return name;
}
public double getValue(){
return value;
}
}
}
Почему не задать компаратор напрямую, чтобы она всегда была осортирована в нужном порядке?Про компаратор снимается, это я тупанул. Потом у мапы есть getOrDefault, чтобы получать значение, если ключа нет в мапе. Ещё непонятно, зачем тебе цикл по всем ключам, если в мапе может быть только один такой ключ. Почему его значение сразу гетом не получить?