update tutorial read part example delete create java arrays hashmap

java - tutorial - ¿Cómo hacer un array de hashmaps?



jsf crud create read update delete project jsf tutorial part 10 (5)

Esto es lo que intenté hacer, pero me da una advertencia:

HashMap<String, String>[] responseArray = new HashMap[games.size()];

Seguridad de tipos: la expresión de tipo HashMap [] necesita una conversión sin marcar para ajustarse a HashMap []


¿Lo que da? Funciona. Simplemente ignóralo:

@SuppressWarnings("unchecked")

No, no cannot parametrizarlo. Sin embargo, prefiero usar una List<Map<K, V>> lugar.

List<Map<String, String>> listOfMaps = new ArrayList<Map<String, String>>();

Para obtener más información sobre colecciones y mapas, eche un vistazo a este tutorial .


Java no quiere que hagas una matriz de HashMaps, pero te permitirá crear una matriz de Objetos. Entonces, simplemente escribe una declaración de clase como un shell alrededor de tu HashMap y crea una matriz de esa clase. Esto le permite almacenar algunos datos adicionales sobre los HashMaps si así lo elige, lo que puede ser un beneficio, dado que ya tiene una estructura de datos algo compleja.

Lo que esto parece:

private static someClass[] arr = new someClass[someNum];

y

public class someClass { private static int dataFoo; private static int dataBar; private static HashMap<String, String> yourArray; ... }


La especificación del lenguaje Java, sección 15.10, establece:

Una expresión de creación de matriz crea un objeto que es una nueva matriz cuyos elementos son del tipo especificado por PrimitiveType o ClassOrInterfaceType. Es un error en tiempo de compilación si el ClassOrInterfaceType no denota un tipo confiable (§4.7).

y

Las reglas anteriores implican que el tipo de elemento en una expresión de creación de matriz no puede ser un tipo parametrizado, que no sea un comodín ilimitado.

Lo más cercano que puede hacer es usar una conversión no verificada, ya sea del tipo en bruto, como lo ha hecho, o de un comodín sin límites:

HashMap<String, String>[] responseArray = (Map<String, String>[]) new HashMap<?,?>[games.size()];

Su versión es claramente mejor :-)


No puedes tener una matriz de un tipo genérico. Utilice la List lugar.


Puedes usar algo como esto:

import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class testHashes { public static void main(String args[]){ Map<String,String> myMap1 = new HashMap<String, String>(); List<Map<String , String>> myMap = new ArrayList<Map<String,String>>(); myMap1.put("URL", "Val0"); myMap1.put("CRC", "Vla1"); myMap1.put("SIZE", "Val2"); myMap1.put("PROGRESS", "Val3"); myMap.add(0,myMap1); myMap.add(1,myMap1); for (Map<String, String> map : myMap) { System.out.println(map.get("URL")); System.out.println(map.get("CRC")); System.out.println(map.get("SIZE")); System.out.println(map.get("PROGRESS")); } //System.out.println(myMap); } }