2012-09-12 18 views
5

मैं मानचित्र की आखिरी एक्स प्रविष्टियां प्राप्त करना चाहता हूं।ग्रोवी रिवर्स मैप कुंजियां

यदि मैं पहली प्रविष्टियां प्राप्त करना चाहता हूं तो इसे ग्रोवी में काफी आसान किया जा सकता है: map.take(10) मुझे मानचित्र की पहली 10 प्रविष्टियां मिलती हैं। लेकिन आखिरी 10 प्रविष्टियां कैसे प्राप्त करें? map.reverse() विधि नहीं है।

उत्तर

4

तुम इतनी तरह drop इस्तेमाल कर सकते हैं:

map.drop(map.size() - 10) 

लेकिन पिछले 10 तत्वों

सब छोड़ के लिए एक विकल्प iterator, जो उल्टा हो सकता है का उपयोग करने के होगा:

map.iterator().reverse().take(10).reverse().collect() 

लेकिन यह बहुत गड़बड़ है, और अधिक संसाधनों का उपयोग करता है

+0

काम करता है जादू। मैं कुछ समय के लिए मानचित्र दस्तावेज़ पढ़ रहा हूं और स्पष्ट रूप से मैंने ध्यान नहीं दिया। – Pma

+0

एक तर्क है कि 'लिंक्ड हैश मैप' में 'रिवर्स' विधि शामिल होनी चाहिए क्योंकि इसमें ऑर्डर की अवधारणा है। अगर मुझे समय मिलता है, तो मैं कोशिश करूँगा और एक पैच –

+0

के साथ आऊंगा, असल में ऐसा लगता है कि [कुछ साल पहले चर्चा की गई थी] (http://jira.codehaus.org/browse/GROOVY-3992), लेकिन यह निर्णय लिया गया था कि ['रिवर्सएच'] (http://groovy.codehaus.org/groovy-jdk/java/util/Map.html#reverseEach%28groovy.lang.Closure%29) पर्याप्त था। इस मामले में, यह नहीं है :-( –