Conseguir 'No coinciden los tipos: no se puede convertir de ArrayList <HashMap <String, String >> a la lista <Map <String, String >>' al crear la instancia una lista de mapas

astillero:
List<Map<String, String>> recordMapList = new ArrayList<HashMap<String,String>>();

La línea anterior da el error: No coinciden los tipos: no se puede convertir de ArrayList> a la lista>

Sin embargo, el problema desaparece si el uso HashMap en lugar de mapa en el lado izquierdo. Podría alguien decirme por qué sucede esto. Es necesario disponer de la izquierda para contener mapa como podría estar usando la misma variable a asignar LinkedHashMap en el lado de Rig como,

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

Por favor ayuda.

Kevin Cruijssen:

A pesar de que ArrayListes una subclase de List, y Mapes una subclase de HashMap, una List<Map>no es una subclase de List<HashMap>. Del mismo modo que no se puede echar una List<HashMap>a una List<Map>. Si pudiéramos, significaría que podríamos añadir Digamos que una TreeMapa nuestra List<Map>, y luego la arrojaron a una List<HashMap>, violando de esta manera el contrato original de la List<HashMap>.

Personalmente sólo tiene que utilizar un operador de diamante (Java 7+) si el recordMapList-instance se crea inmediatamente:

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

Y si se la crea otra parte sólo el Listpuede haber una ArrayList, pero el resto sería lo mismo. (NOTA: Por supuesto podría seguir utilizando el operador de diamantes aquí también, pero si la creación de la instancia y el campo real se separan, yo personalmente prefiero usar los tipos por lo que está inmediatamente claro qué tipo entra en la lista, sin saltar a la campo real en el código.)

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

En ambos casos se puede añadir sus HashMap<String, String>instancias al recordMapList.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=186721&siteId=1
Recomendado
Clasificación