2011-10-17 28 views
7

Duplicar posible:
Java: How to convert List to MapArrayList Conversión a Hashmap

tengo arrayList

ArrayList<Product> productList = new ArrayList<Product>(); 
productList = getProducts(); //Fetch the result from db 

Quiero convertir a ArrayList a Hashmap gusta esta

HashMap<String, Product> s= new HashMap<String,Product>(); 

Por favor, ayúdenme a convertir a HashMap.

+0

¿El 'product' tiene una (s) propiedad (s) única (s) – SimonC

+0

Sí.ProductCode es único – Piraba

+0

Suponga que ** field1 ** es un campo dentro de _ ** Product ** _ clase, por lo que puede hacer esto 'Map urMap = yourList.stream(). Collect (Colectores) .toMap (Product :: getField1, Function.identity())); ' –

Respuesta

16

La metodología general sería iterar a través de la ArrayList, e insertar los valores en la HashMap. Un ejemplo es el siguiente:

HashMap<String, Product> productMap = new HashMap<String, Product>(); 
for (Product product : productList) { 
    productMap.put(product.getProductCode(), product); 
} 
+0

La iteración es un poco lenta. Tiene que haber una manera más rápida. –

+1

Puedes usar la API de flujo de Java 8. Ver http://codecramp.com/java-8-streams-api-convert-list-map/ – EMM

1

Usando una supuesta propiedad de nombre como la clave del mapa:

for (Product p: productList) { s.put(p.getName(), p); } 
1

[editado]

usando tu comentario sobre Código de producto (y suponiendo que el código de producto es una cadena) como referencia ...

for(Product p : productList){ 
     s.put(p.getProductCode() , p); 
    } 
Cuestiones relacionadas