사용자 지정 순서에 따라 목록을 정렬하려고하는데 이미 stackOverflow 링크를 따라갔습니다. 커스텀 오더는 customOrder에서 배열리스트로 처리 된 "ST, SIT, JDC"와 같아야합니다. 위의 순서대로 목록에 데이터베이스에서 가져온 데이터를 표시해야하지만 정확히 "ST"라는 단어가있는 경우와 같이 데이터베이스의 데이터가이 목록과 정확히 일치하는 경우에만 문제가 발생합니다. 또는 "SIT"를 선택하면 작업을 수행합니다. 는하지만 데이터베이스에서 무엇입니까 데이터는 다음과 같습니다사용자 지정 순서에 따라 Java 목록을 정렬하는 방법
이ST1, ST2, ST3, SIT1, SIT2, JDC 출시, JDC 정지, JDC 10
이 코드 나던 작업을 내 데이터의 경우 결과에 오류가 없지만 데이터를 전혀 정렬하지 않습니다. 당신이 customOrder
목록에있는 모든 가능성을 정의하지 않는 것이,
List<Environment> environments = environmentDAO.getAll();
final List<String> customOrder = Arrays.asList("ST", "SIT", "JDC");
Collections.sort(environments, new Comparator<Environment>() {
@Override
public int compare(final Environment o1, final Environment o2) {
Integer firstValue = Integer.valueOf(customOrder.indexOf(o1.getAcronym()));
Integer secondValue = Integer.valueOf(customOrder.indexOf(o2.getAcronym()));
int comparedTo = firstValue.compareTo(secondValue);
return comparedTo;
}
});
귀하의 설명이 꽤 불분명 한 것 같습니다. 샘플 데이터를 제공하고 이미 정렬 된 것처럼 보이게하는 방법. –
** 사용자 정의 정렬 순서는 무엇입니까 **? 예상 결과를 게시하십시오. ** ** 모든'collection '은 올바른'Comporator'를 제공하는 한'Collections.sort()'로 정렬 될 수 있습니다. –
나에게 좋아 보인다. 정확히 작동하지 않는 것은 무엇입니까? 예외를 던지고 있습니까? 주문이 취소 되었습니까? – NeplatnyUdaj