2012-09-12 17 views
5

Me gustaría obtener las últimas X entradas de un mapa.Groovy teclas de mapa inverso

Si me gustaría obtener las primeras entradas se puede hacer bastante fácil en groovy: map.take(10) me consigue las primeras 10 entradas de un mapa. Pero, ¿cómo obtener LAST 10 entradas? no hay un método map.reverse().

Respuesta

4

Usted podría utilizar drop así:

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

Para excluir a todos menos los últimos 10 elementos

Una alternativa sería utilizar el iterator, que se puede invertir:

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

Pero es mucho más complicado y usa más recursos

+0

Funciona como un encanto. Estuve leyendo Map doc por un tiempo y aparentemente no me di cuenta. – Pma

+0

Existe un argumento que 'LinkedHashMap' debe tener un método' reverse' agregado ya que tiene el concepto de orden. Si tengo tiempo, trataré de encontrar un parche –

+0

En realidad, parece que fue [discutido hace un par de años] (http://jira.codehaus.org/browse/GROOVY-3992), pero se decidió que ['reverseEach'] (http://groovy.codehaus.org/groovy-jdk/java/util/Map.html#reverseEach%28groovy.lang.Closure%29) era suficiente. En este caso, no es :-( –