답변:
다음은 한 가지 방법입니다 list.
list.sort(null);
Collections.reverse(list);
또는 직접 구현하여 Comparator반대 단계를 정렬하고 제거 할 수 있습니다 .
list.sort((o1, o2) -> o2.compareTo(o1));
또는 Collections.reverseOrder()후진 중이므로 더 간단하게 사용하십시오 .
list.sort(Collections.reverseOrder());
o2.compareTo(o1)여기에 있어야하지만 :)
list.sort((o1, o2) -> o2.compareTo(o1))
Comparator<Long> comparator = Collections.reverseOrder();
Collections.sort(arrayList, comparator);
아래에 주어진 다음 코드를 사용할 수 있습니다.
Collections.sort(list, Collections.reverseOrder());
또는 사용자 정의 비교기를 사용하려는 경우 아래와 같이 사용할 수 있습니다.
Collections.sort(list, Collections.reverseOrder(new CustomComparator());
CustomComparator는 목록에있는 개체를 비교하는 비교기 클래스입니다.
Java 8에서 잘하는 것은 훨씬 재미 있고 쉽습니다.
Collections.sort(variants,(a,b)->a.compareTo(b));
Collections.reverse(variants);
람다 표현이 여기에 락!
a 와 b 를 비교 하기 위해 둘 이상의 라인 로직이 필요한 경우 다음 과 같이 작성할 수 있습니다.
Collections.sort(variants,(a,b)->{
int result = a.compareTo(b);
return result;
});
정상적으로 정렬하고 사용 Collections.reverse();
정렬 한 다음 뒤집습니다.
아래와 같이 자체 Comparator를 구현하는보다 일반적인 접근 방식
Collections.sort(lst,new Comparator<Long>(){
public int compare(Long o1, Long o2) {
return o2.compareTo(o1);
}
});
Collections.sort()내림차순을 제공하는 비교기와 함께 사용 합니다. Collections.sort에 대한 Javadoc을 참조하십시오 .
당신은 또한을 정렬 할 수 있습니다 ArrayList와 TreeSet대신의 comparator. 다음은 정수 배열에 대한 이전 질문의 예입니다. 나는 "숫자"를 ArrayList.
import.java.util.*;
class MyClass{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
ArrayList<Integer> numbers = new ArrayList<Integer>();
TreeSet<Integer> ts = new TreeSet<Integer>(numbers);
numbers = new ArrayList<Integer>(ts);
System.out.println("\nThe numbers in ascending order are:");
for(int i=0; i<numbers.size(); i++)
System.out.print(numbers.get(i).intValue()+" ");
System.out.println("\nThe numbers in descending order are:");
for(int i=numbers.size()-1; i>=0; i--)
System.out.print(numbers.get(i).intValue()+" ");
}
}
그래서 제가 중요하다고 생각하는 것이 있는데, 여러분이 고려해야 할 것이 있다고 생각합니다. 런타임 및 메모리. 목록이 있고 정렬하고 싶다고 가정 해 보겠습니다. 기본 정렬이 있거나 직접 개발할 수 있습니다. 그런 다음 목록을 뒤집고 싶다고 말합니다. 그것이 위에 나열된 대답입니다.
그래도 목록을 만드는 경우 다른 데이터 구조를 사용하여 저장 한 다음 배열에 덤프하는 것이 좋습니다.
힙은이 작업을 수행합니다. 데이터를 필터링하면 모든 것을 처리 할 수 있으며 개체에서 모든 것을 꺼내 정렬 할 수 있습니다.
또 다른 옵션은지도가 작동하는 방식을 이해하는 것입니다. 많은 경우에 Map 또는 HashMap은 무엇이라고 불리는 것으로 그 뒤에 기본 개념이 있습니다.
예를 들어 .... 키가 긴 키-값 쌍을 입력하고 모든 요소를 추가하면 다음을 수행 할 수 있습니다. .keys그러면 자동으로 정렬 된 목록이 반환됩니다.
정렬 및 후속 반전을 계속해야한다고 생각하는 방법에 앞서 데이터를 처리하는 방법에 따라 다릅니다.
l1 > l2 ? -1 : l1 == l2 ? 0 : 1이 코드는 말도 안됩니다.o1.compareTo(o2)그때 사용하십시오 .