¿Qué estructura de datos especifica la siguiente declaración?Java Generics Sintaxis para matrices
List<ArrayList>[] myArray;
creo que debería declarar una matriz en donde cada elemento es un List
(por ejemplo, un LinkedList
o un ArrayList
) y requieren que cada List
contienen ArrayList
objetos.
Mi razonamiento:
List<String> someList; // A List of String objects
List<ArrayList> someList; // A List of ArrayList objects
List<ArrayList>[] someListArray; // An array of List of ArrayList objects
Después de ejecutar algunas pruebas, que determinó que acepta una matriz donde cada elemento es un objeto LinkedList
y no especifica lo que contienen los objetos ListaEnlazada.
Así List<ArrayList>
especifica lo que el List
debe contener, pero List<ArrayList>[]
especifica cómo se debe implementar la List
.
¿Echo de menos algo?
Aquí están mis pruebas.
import java.util.ArrayList;
import java.util.List;
import java.util.LinkedList;
public class Generics1 {
public static void main(String[] args) {
List<ArrayList>[] someListArray;
someListArray = getArrayWhereEachElementIsAnArrayListObject();
// Why does this satisfy the declaration?
//someListArray[0] => ArrayList object holding Strings
someListArray= getArrayWhereEachElementIsAListOfArrayListObjects();
//someListArray[0] => ArrayList object holding ArrayList objects
}
public static List[] getArrayWhereEachElementIsAnArrayListObject() {
List[] arrayOfLists = new ArrayList[2];
arrayOfLists[0] = getStringList();
arrayOfLists[1] = getIntegerList();
return arrayOfLists;
}
public static List[] getArrayWhereEachElementIsAListOfArrayListObjects() {
List list1 = new ArrayList();
list1.add(getArrayList());
List list2 = new ArrayList();
list2.add(getArrayList());
List[] arrayOfListsOfArrayLists = new ArrayList[2];
arrayOfListsOfArrayLists[0] = list1;
arrayOfListsOfArrayLists[1] = list2;
return arrayOfListsOfArrayLists;
}
public static List getStringList() {
List stringList= new ArrayList();
stringList.add("one");
stringList.add("two");
return stringList;
}
public static List getIntegerList() {
List intList= new ArrayList();
intList.add(new Integer(1));
intList.add(new Integer(2));
return intList;
}
public static ArrayList getArrayList() {
ArrayList arrayList = new ArrayList() ;
return arrayList;
}
}
Cada elemento probablemente fue asignado como myArray [0] = new ArrayList(); –
Parece que todos los argumentos de tipo genérico fueron eliminados de su muestra de código. Esto habría sucedido porque lo incluyó en etiquetas PRE, y el sitio interpretó los argumentos de tipo como etiquetas HTML malformadas o prohibidas (según Q31657). Deberías poder editarlo. –