2015-10-07 25 views
10

Tôi có một ArrayList và muốn sắp xếp nó theo thứ tự giảm dần. Tôi sử dụng cho nó java.util.stream.Stream.sorted(Comparator) phương pháp. Dưới đây là mô tả theo API Java:Đảo ngược một bộ so sánh trong Java 8

Trả về luồng bao gồm các thành phần của luồng này, được sắp xếp theo cung cấp Comparator.

phương pháp này trả lại cho tôi sắp xếp theo thứ tự tăng dần. Tôi nên thay đổi thông số nào, chỉ để có thứ tự giảm dần?

+2

Thay đổi hành vi sánh, tất nhiên. – duffymo

Trả lời

29

Bạn có thể sử dụng Comparator.reverseOrder() để có trình so sánh áp đặt đảo ngược thứ tự tự nhiên.

Nếu bạn muốn đảo ngược thứ tự của một bộ so sánh hiện có, bạn có thể sử dụng Comparator.reversed().

Mẫu mã:

Stream.of(1, 4, 2, 5) 
    .sorted(Comparator.reverseOrder()); 
    // stream is now [5, 4, 2, 1] 

Stream.of("foo", "test", "a") 
    .sorted(Comparator.comparingInt(String::length).reversed()); 
    // stream is now [test, foo, a], sorted by descending length 
Các vấn đề liên quan