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