Как отсортировать последнюю группу по первому значению

#java

Вопрос:

Ввод

     1-Y-YYY-100.55.23.20
    1-Y-YYY-100.55.23.21
    1-Y-YYY-100.55.24.A
    0-Y-YYY-100.55.22.D
    0-Y-YYY-100.55.23.22
    0-Y-YYY-100.55.23.67
    0-Y-YYY-100.55.23.D
    0-Y-YYY-100.55.23.E
    0-Y-YYY-100.55.24.D
    1-Y-YYY-101.55.23.D
    0-Y-YYY-101.55.23.E
    1-Y-YYY-100.200.23.B
    1-Y-YYY-100.200.29.D
    0-Y-YYY-100.200.29.A
    1-Y-YYY-100.51.23.D
    1-Y-YYY-100.51.24.D
    1-Y-YYY-100.56.23.D
    1-Y-YYY-101.51.23.F
    1-Y-YYY-101.151.235.D
    1-Y-YYY-100.151.242.D
 

Ожидаемый Результат:

     1-A-ABC-100.55.24.A
    1-A-ABC-100.55.23.F
    1-A-ABC-100.55.23.21
    1-A-ABC-100.55.23.20
    1-A-ABC-100.55.21.E
    0-A-ABC-100.55.22.D
    0-A-ABC-100.55.23.D
    0-A-ABC-100.55.23.E
    0-A-ABC-100.55.23.22
    0-A-ABC-100.55.24.D
    1-A-ABC-101.55.23.D
    0-A-ABC-101.55.23.E
    1-A-ABC-100.200.29.D
    1-A-ABC-100.200.23.B
    0-A-ABC-100.200.29.A
    1-A-ABC-100.51.24.D
    1-A-ABC-100.51.23.F
    1-A-ABC-100.56.23.D
    1-A-ABC-101.51.23.D
    1-A-ABC-101.151.235.D
    1-A-ABC-100.151.242.D
 

Когда появляется 1 группа строк (пока первая точка не станет одной группой), нам нужно отсортировать последние 2 значения по убыванию

Когда появляется 0 группа строк (пока первая точка не станет одной группой), нам нужно отсортировать последние 2 значения по возрастанию

Пример

0-Y-YYY-100-это другая группа, чем 0-Y-YYY-101

Как этого добиться?

Я пишу собственный компаратор и пробовал с

 group1.thenComparing(group2.reversed()).thenComparing(group3); 
 

Похоже, это невозможно сделать с помощью компаратора….

 Group1: 100.51 or 101.51 etc., Group2 etc., 
Comparator group1 = Comparator.comparingInt(s -> (Integer) map.get(s.group)); 
Comparator group2= Comparator.comparing(s -> s.emptyOrOne); 
Comparator group3= Comparator.comparing(s -> s.last); 
group1 .thenComparing(group2.reversed()).thenComparing(group3);
 

Спасибо

Комментарии:

1. Добро пожаловать сюда. Пробовали ли вы решение и сталкиваетесь ли вы с конкретной проблемой, которую не можете решить? Не могли бы вы также поделиться своей попыткой? Это помогло бы нам предложить вам более целенаправленное решение.

2. @dolphin trendz как хранится входная информация?

3. Я пишу собственный компаратор и попробовал с помощью group1.thenComparing(group2.reversed()).thenComparing(group3); Похоже, это невозможно сделать с помощью comparator….So я опубликовал с подробностями

4. Группа1: 100,51 или 101,51 и т. Д., Группа2 и т. Д., Компаратор группа1 = Компаратор.Сравнение(s -> (Целое число) map.get(s.группа)); Компаратор группа2= Компаратор.сравнение(s ->> s.Пустое значение); Компаратор группа3= Компаратор.сравнение(s ->>> s.последнее); возврат группа1 .Затем сравнение(группа2.обратное()).Затем сравнение(группа3);

5. Пожалуйста, обновите свой вопрос и укажите свою попытку. Я посмотрю на это