Моя программа рассчитывает суммы цифр всех значений, введенных в текстовый файл. Введенные значения и соответствующие им суммы цифр хранятся в LinkedHashMap и располагаются в порядке убывания (по сумме цифр). Пока работает, как и ожидалось.
Если вы вводите несколько значений с одинаковой суммой цифр, предполагается, что они (и только те) упорядочены по убыванию по их первоначальному значению, а не по сумме цифр на этот раз (отдых остается таким же, как и раньше). Есть ли способ сделать это?
Я все еще довольно плохо знаком с Java и программированием в целом.
Мой основной метод без лишних вещей:
String filePath = args[0];
LineNumberReader br = new LineNumberReader(new FileReader(filePath));
LinkedHashMap<BigInteger, BigInteger> unsortedMap = new LinkedHashMap<BigInteger, BigInteger>();
if(br.ready()){
while (true) {
String line = br.readLine();
if (line == null) {
break;
}
BigInteger input = new BigInteger(line);
unsortedMap.put(input, methods.digitSum(input));
}
LinkedHashMap<BigInteger, BigInteger> reverseSortedMap = new LinkedHashMap<BigInteger, BigInteger>();
unsortedMap.entrySet()
.stream()
.limit(20)
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
.forEachOrdered(x -> reverseSortedMap.put(x.getKey(), x.getValue()));
for (BigInteger key : reverseSortedMap.keySet()){
System.out.println(new BigDecimal(key).toPlainString() + " (Digit Sum: " + reverseSortedMap.get(key) + (")"));
}
br.close();