Сбор в java не сортируется и выдает ошибку - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь отсортировать список, но у меня проблемы с компаратором. Мой список А, и я пытаюсь отсортировать по определенному int, но я получаю сообщение об ошибке ... И я не могу использовать выражение lamda или наследование ... Любая помощь ...

Код:

List<?> sortbenefitList = new ArrayList();
List<SelectItem> sortedBenefitList = new ArrayList<SelectItem>();
            Map<String,Integer> map=new HashMap<String, Integer>();
            for(IBen benefit : benefitList){
                Collections.sort(benefitList, benefit.getStartSegmentNumber());

                SelectItem item = new SelectItem();
                item.setValue(benefit.getBenefitId().toString());
                item.setLabel(benefit.getStartSegmentNumber().toString());
                sortedBenefitList.add(item);
            }
            if(sortedBenefitList != null && !sortedBenefitList.isEmpty()){
                Collections.sort(benefitList, benefit.getStartSegmentNumber().toString()) {

                    public int compare(SelectItem a1, SelectItem a2) {
                        String a1Lebel = a1.getLabel();
                        String a2Lebel = a2.getLabel();
                        Integer a1Int = Integer.parseInt(a1Lebel);
                        Integer a2Int = Integer.parseInt(a2Lebel);
                        a1Int.compareTo(a2Int)
                        map.put();
                        return a1Int.compareTo(a2Int);
                    }
                });
            }

Выше мой код.

1 Ответ

0 голосов
/ 25 июня 2019

ваш код должен выглядеть так: Вам не нужно 2 списка. Только один. Метод sort отсортирует список переданных им

List<SelectItem> benefitList = new ArrayList<SelectItem>();
//add items
Comparator<SelectItem> comparator = (o1, o2) -> Integer.compare(Integer.parseInt(o1.getLabel()), Integer.parseInt(o2.getLabel()));
Collections.sort(benefitList, comparator);

Вы также можете использовать сравнение int:

Comparator<SelectItem> comparator = Comparator.comparingInt(o -> Integer.parseInt(o.getLabel()));

или используйте анонимный класс, если вы не можете использовать лямбду

Comparator<SelectItem> comparator = new Comparator<SelectItem>() {
  @Override
  public int compare(SelectItem o1, SelectItem o2) {
    return Integer.compare(Integer.parseInt(o1.getLabel()), Integer.parseInt(o2.getLabel()));
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...