मैं एक सूची को सॉर्ट करने के लिए जावा लैम्ब्डा का उपयोग कर रहा हूं।
मैं इसे उल्टे तरीके से कैसे छाँट सकता हूँ?
मैंने इस पोस्ट को देखा , लेकिन मैं जावा 8 लैम्ब्डा का उपयोग करना चाहता हूं।
यहाँ एक हैक के रूप में मेरा कोड (मैंने * -1 इस्तेमाल किया है) है
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
forEach
forEachOrdered
जैसा कि नाम से ही पता चलता है कि एनकाउंटर ऑर्डर की परवाह है, जो प्रासंगिक है क्योंकि आप कुछ निश्चित नई फाइलों को छोड़ना चाहते हैं, जो "संशोधन के समय द्वारा क्रमबद्ध" क्रम पर निर्भर करती हैं ।
sort
→ skip
→ (अव्यवस्थित) forEach
काम करना चाहिए, यह है कि यह वास्तव में आज के JREs में इस तरह से काम करने के लिए लागू किया गया है सही है और है, लेकिन 2015, में वापस आ गया जब पिछली टिप्पणी किए गए थे, यह वास्तव में एक मुद्दा था (जैसा कि आप इस प्रश्न में पढ़ सकते हैं )।
-1 * answer
साथ प्रतिस्थापित करते हैंanswer
, तो यह क्या था के साथ क्रम उलट जाएगा-1 * ...
।