public List run(Integer guideYear) throws Exception { List guides = Guide.readByYear(guideYear); if (guides.isEmpty()) { throw new NonExistingServiceException(); } BeanComparator numberComparator = new BeanComparator("number"); BeanComparator versionComparator = new BeanComparator("version"); ComparatorChain chainComparator = new ComparatorChain(); chainComparator.addComparator(numberComparator); chainComparator.addComparator(versionComparator); Collections.sort(guides, chainComparator); // CollectionUtils.filter(guides,) List result = getLatestVersions(guides); return result; }