Ver Mensaje Individual
  #7 (permalink)  
Antiguo 07/01/2016, 21:06
Avatar de detective_jd
detective_jd
 
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años, 1 mes
Puntos: 6
Respuesta: Estuctura para paginar

PagesMap (se encuentra en su versión 1.0)

Código Java:
Ver original
  1. import java.util.ArrayList;
  2. import java.util.Comparator;
  3. import java.util.LinkedHashMap;
  4. import java.util.TreeMap;
  5. public class PagesMap<K,V>
  6. {
  7.     public enum Navegate {
  8.         goToFirst,
  9.         goToPrevious,
  10.         goToNext,
  11.         goToLast,
  12.         goToPresent
  13.     }
  14.     private final ArrayList<LinkedHashMap<K,V>>pages = new ArrayList();
  15.     private final int limit;
  16.     private int filas;
  17.     private int latest;
  18.     private int size;
  19.     private int page;
  20.     public PagesMap() {
  21.         this.limit = 10;
  22.         this.clear();
  23.     }
  24.     public PagesMap(int xlimit) {
  25.         this.limit = xlimit;
  26.         this.clear();
  27.     }    
  28.     private LinkedHashMap<K,V> getNext() {
  29.         return (page == latest) ? getLast() : pages.get(++page);
  30.     }
  31.     private LinkedHashMap<K,V> getPrevious() {
  32.         return (page == 0) ? getFirst() : pages.get(--page);
  33.     }
  34.     private LinkedHashMap<K,V> getFirst() {
  35.         return (page != 0) ? pages.get((page = 0)) : pages.get((page = 0));
  36.     }
  37.     private LinkedHashMap<K,V> getLast() {
  38.         return (page != latest) ? pages.get((page = latest)) : pages.get((page = latest));
  39.     }
  40.     private LinkedHashMap<K,V> getPresent() {
  41.         return pages.get(page);
  42.     }
  43.     public LinkedHashMap<K,V> getReload(Navegate opcion) {
  44.         switch (opcion) {
  45.             case goToFirst:
  46.                 getFirst();
  47.                 break;
  48.             case goToPrevious:
  49.                 getPrevious();
  50.                 break;
  51.             case goToNext:
  52.                 getNext();
  53.                 break;
  54.             case goToLast:
  55.                 getLast();
  56.                 break;
  57.         }
  58.         return getPresent();
  59.     }
  60.     public final void clear() {
  61.         pages.clear();
  62.         this.page = 0;
  63.         this.filas = 0;
  64.         this.latest = 0;
  65.         LinkedHashMap<K,V> t = new LinkedHashMap();
  66.         pages.add(t);
  67.         this.size = 1;
  68.     }
  69.     public V put(K key,V value) {
  70.         if (key == null) {
  71.             throw new NullPointerException("elemento nulo");
  72.         }
  73.         else if (limit == filas) {
  74.                 filas = 0;
  75.                 LinkedHashMap<K,V> t = new LinkedHashMap();
  76.                 pages.add(t);
  77.                 latest++;                
  78.                 pages.get(latest).put(key, value);
  79.                 size++;
  80.                 filas++;
  81.             }
  82.         else{
  83.             pages.get(latest).put(key, value);
  84.             filas++;
  85.         }      
  86.         return value;
  87.     }    
  88.     public V get(K key){
  89.         for(LinkedHashMap<K,V> p : pages){
  90.             if(p.get(key) != null){
  91.                 return p.get(key);
  92.             }
  93.         }
  94.         return null;
  95.     }
  96.     public boolean containsKey(K key){
  97.         for(LinkedHashMap<K,V> p : pages){
  98.             if(p.containsKey(key)){
  99.                 return p.containsKey(key);
  100.             }            
  101.         }
  102.         return false;
  103.     }
  104.     public boolean containsValue(V value){
  105.         for(LinkedHashMap<K,V> p : pages){
  106.             if(p.containsValue(value)){
  107.                 return p.containsValue(value);  
  108.             }          
  109.         }
  110.         return false;
  111.     }
  112.     public V remove(K key) {
  113.         LinkedHashMap<K,V> aux = this.toMap();
  114.         V res = aux.get(key);
  115.         aux.remove(key);
  116.         this.clear();
  117.         aux.entrySet().stream().forEach((e) -> {
  118.             this.put(e.getKey(),e.getValue());
  119.         });
  120.         return res;
  121.     }
  122.     public LinkedHashMap<K,V> toMap() {
  123.         LinkedHashMap<K,V> aux = new LinkedHashMap();
  124.         pages.stream().forEach((list) -> {
  125.             list.entrySet().stream().forEach((row) -> {
  126.                 aux.put(row.getKey(),row.getValue());
  127.             });
  128.         });
  129.         return aux;
  130.     }
  131.     public void sort(){
  132.         this.sort(null);
  133.     }
  134.     public void sort(Comparator comp){
  135.         TreeMap<K, V> map = new TreeMap(comp);
  136.         this.toMap().entrySet().stream().forEach((e) -> {
  137.             map.put(e.getKey(), e.getValue());
  138.         });
  139.         this.clear();
  140.         map.entrySet().stream().forEach((e) -> {
  141.             this.put(e.getKey(), e.getValue());
  142.         });        
  143.     }
  144.     public PagesMap<K,V>copyTo(){
  145.         PagesMap<K,V> aux= new PagesMap(limit);
  146.         this.toMap().entrySet().stream().forEach((e) -> {
  147.                 aux.put(e.getKey(), e.getValue());            
  148.         });
  149.         return aux;
  150.     }
  151.     public boolean isEmpty(){
  152.         return size == 0;
  153.     }
  154.     public int size() {
  155.         return size;
  156.     }        
  157. }

PagesSet (se encuentra en su versión 1.0)

Código Java:
Ver original
  1. import app.contr.util.PagesMap.Navegate;
  2. import java.util.Comparator;
  3. import java.util.Set;
  4. import java.util.TreeSet;
  5. public class PagesSet<E>
  6. {
  7.     private int limit_copy;
  8.     private final Object PRESENT = new Object();
  9.     private PagesMap<E,Object> map=new PagesMap();
  10.     public PagesSet() {
  11.         map=new PagesMap();
  12.     }
  13.     public PagesSet(int xlimit) {
  14.         limit_copy = xlimit;
  15.         map=new PagesMap(limit_copy);
  16.        
  17.     }  
  18.     public Set<E> getReload(Navegate opcion) {
  19.         return map.getReload(opcion).keySet();
  20.     }
  21.     public int size() {
  22.         return map.size();
  23.     }
  24.     public boolean isEmpty() {
  25.         return map.isEmpty();
  26.     }
  27.     public boolean contains(E obj) {
  28.         return map.containsKey(obj);
  29.     }
  30.     public boolean add(E obj) {
  31.         return map.put(obj, PRESENT) == null;
  32.     }
  33.     public boolean remove(E obj) {
  34.         return map.remove(obj)==PRESENT;
  35.     }
  36.     public Set<E>toSet(){
  37.         return map.toMap().keySet();
  38.     }
  39.     public void sort(){
  40.         this.sort(null);        
  41.     }
  42.     public void sort(Comparator comp){
  43.         TreeSet<E> aux = new TreeSet<>(comp);
  44.         this.toSet().stream().forEach((e) -> {
  45.             aux.add(e);
  46.         });
  47.         this.clear();
  48.         aux.stream().forEach((e) -> {
  49.             this.add(e);
  50.         });
  51.     }
  52.     public PagesSet<E>copyTo(){
  53.         PagesSet<E> aux= new PagesSet(limit_copy);
  54.         this.map.toMap().keySet().stream().forEach((e) -> {
  55.             aux.add(e);
  56.         });
  57.         return aux;
  58.     }
  59.     public void clear() {
  60.         map.clear();
  61.     }
  62. }

Saludos a todos y gracias!