Похоже, вы знаете структуру каждой строки в вашем ResultSet
, поэтому вам будет намного проще, если вы создадите объект, представляющий каждую строку вместо Map<String, Object>
. Я назвал это Part
, так как это то, на что, похоже, ссылается ключ, но называйте это как угодно.
public class Part {
private LocalDate commitDate;
private long partKey;
private BigDecimal probability;
//getters and setters
}
С этим вы можете изменить свой метод так, чтобы он возвращал список Part
s (в качестве отступления: вы не должны использовать нетипизированный список здесь. Даже если вы не будете следовать остальным моим советам, подпись вашего метода должен всегда иметь тип для возвращаемого List
. Имена методов Java также должны начинаться с символа в нижнем регистре - по соглашению только class
имеют имена, которые начинаются с верхнего регистра).
public List<Part> resultSetToParts(ResultSet rs) throws SQLException {
List<Part> list = new ArrayList<>(); //No need to specify the generic type again, we can use the diamond operator for Java 7 and later
while (rs.next()) {
Part part = new Part();
part.setCommitDate(rs.getDate("l_commitdate").toLocalDate()); //Note: this is vulnerable to NullPointerExceptions if the date can be null
part.setPartKey(rs.getString("l_partkey"));
part.setProbability(BigDecimal.valueOf(rs.getDouble("PROBABILITY")));
list.add(part);
}
return list;
}
Теперь, когда мы проделали небольшую работу по настройке, вы можете легко отсортировать ее по любому полю:
List<Part> parts = resultSetToParts(rs);
parts.sort(Comparator.comparing(Part::getProbability);