Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/10/2014, 12:55
Avatar de Profesor_Falken
Profesor_Falken
 
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: ordenar y filtrar hashmap multidimensional

Buenas,

http://docs.oracle.com/javase/7/docs...l/HashMap.html

Como puedes ver en la documentación, HashMap es excelente por su rendimiento, ya que las operaciones básicas como put o get se realizan en tiempo constante O(1), gracias a su implementación basada en tabla de dispersión.

Sin embargo, como verás en la segunda linea de la documentación, esta implementación tiene un problema:
"This class makes no guarantees as to the order of the map; in particular, it does not guarantee that the order will remain constant over time"

No sirve para ordenar elementos.

En cuanto a las alternativas que comentas:
hashtable: es una HashMap sincronizada, util en los casos en los que haya concurrencia. Sin embargo, esta sincronizacion tiene un coste: su rendimiento es mucho peor.
linkedHashmap: es una implementación de hashmap basada en listas enlazadas. Permite ordenación pero pierde las ventajas que ofrece el mapa. Al final funciona en realidad como una lista.
json: muy útil en lenguajes dinámicos como Python o Javascript (en este último la integración es total ya que lo soporta de forma nativa), pero en Java resulta un poco más engorroso debido a su naturaleza de tipado fuerte y estático.

ArrayList: esta implementación de lista me parece una buena solución para tu problema.


Deberías comenzar por crearte una clase producto:

class Producto {
private long id;
private String marca;
[...]


gets y sets publicos
}

Después cuando recuperes de la base de datos te vas creando una lista de Producto.

List<Producto> productos = new ArrayList<>();
//Recupero de base de datos
for (elemento en base de datos) :
Producto producto = new Producto();
producto.setId
producto.setMarca
etc

productos.add(producto)


Por último, esta lista la podras ordenar facilmente mediante el método sort e implementando el Comparator que necesites.
http://www.mkyong.com/java/java-obje...nd-comparator/

Ya nos vas contando.


Un saludo
__________________
If to err is human, then programmers are the most human of us