У меня есть класс Person:
public class Person {
public Integer id;
public Integer lame;
public String position;
public Person(Integer id, Integer lame, String position) {
this.id = id;
this.lame = lame;
this.position = position;
}
public String getPosition() {
return this.position;
}
public void setPosition(String position) {
this.position = position;
}
}
И у меня есть список таких лиц:
List<Person>list = new ArrayList<Person>();
list.add(new Person (85785,1,"R01C01"));
list.add(new Person (6789,1,"R05C01"));
list.add(new Person (67866,1,"R02C02"));
list.add(new Person (767867,1,"R04C01"));
list.add(new Person (10,1,"R02C01"));
list.add(new Person (1687, 1, "R03C02"));
list.add(new Person (3542,1,"R04C02"));
list.add(new Person (35433,1,"R05C02"));
list.add(new Person (435434,1,"R03C01"));
list.add(new Person (333,1,"R01C02"));
(я указываю, что размеры строк ( R) и столбцы (C) могут различаться. Но я не думаю, что это вызовет проблемы, связанные с той же сортировкой)
Я бы хотел отсортировать элементы в этом списке следующим образом :
- Пластина
- Строка (R)
- Столбец (C)
список должен быть отсортирован по позиции, как это:
Я пытался использовать функцию «Сравнение»:
Collections.sort(list, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
String positionO1 = o1.getPosition().substring(4,6); // "C" position
String positionO2 = o2.getPosition().substring(4,6); // "C" position
return positionO1.compareTo(positionO2);
}
});
Collections.sort(list, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
String positionO1 = o1.getPosition().substring(1,3); // "R" position
String positionO2 = o2.getPosition().substring(1,3); // "R" position
return positionO1.compareTo(positionO2);
}
});
for (Person p: list) {
System.out.println(p.getPosition());
}
Но я получаю следующий результат .. ..:
- R01C01
- R01C02
- R02C01
- R02C02
- R03C01
- R03C02
- R04C01
- R04C02
- R05C01
- R05C02
Можете ли вы помочь мне, пожалуйста ..?