Tôi đang sử dụng java lambda để sắp xếp một danh sách.
Làm thế nào tôi có thể sắp xếp nó theo một cách ngược lại?
Tôi đã thấy bài đăng này , nhưng tôi muốn sử dụng java 8 lambda.
Đây là mã của tôi (tôi đã sử dụng * -1) như một bản hack
Arrays.asList(files).stream()
.filter(file -> isNameLikeBaseLine(file, baseLineFile.getName()))
.sorted(new Comparator<File>() {
public int compare(File o1, File o2) {
int answer;
if (o1.lastModified() == o2.lastModified()) {
answer = 0;
} else if (o1.lastModified() > o2.lastModified()) {
answer = 1;
} else {
answer = -1;
}
return -1 * answer;
}
})
.skip(numOfNewestToLeave)
.forEach(item -> item.delete());
forEachOrdered
thay vìforEach
forEachOrdered
, như tên cho thấy, quan tâm đến thứ tự gặp gỡ có liên quan khi bạn muốn bỏ qua một số tệp mới nhất định dựa trên thứ tự sắp xếp theo thứ tự thời gian sửa đổi .
sort
→ skip
→ (không có thứ tự) forEach
nên hoạt động, là chính xác và nó thực sự được thực hiện theo cách này trong các JRE ngày nay, nhưng vào năm 2015, khi các bình luận trước đó được đưa ra, nó đã được đưa ra thực sự là một vấn đề (như bạn có thể đọc trong câu hỏi này ).
-1 * answer
bằnganswer
, thứ tự sẽ thay đổi để đảo ngược với những gì nó đã được với-1 * ...
.