sé que para las matrices puede agregar un elemento en una matriz bidimensional de esta manera:elemento de adición en dos dimensiones ArrayList
array[0][1] = 17; //just an example
¿Cómo puedo hacer lo mismo con ArrayList?
sé que para las matrices puede agregar un elemento en una matriz bidimensional de esta manera:elemento de adición en dos dimensiones ArrayList
array[0][1] = 17; //just an example
¿Cómo puedo hacer lo mismo con ArrayList?
myList.get(0).set(1, 17);
¿quizás?
Esto supone un anidado ArrayList
, es decir
ArrayList<ArrayList<Integer>> myList;
Y para recoger en su elección de palabras: Esta asigna un valor a un lugar específico en la lista interna, no añadir uno . Pero también lo hace su ejemplo de código, ya que las matrices tienen un tamaño fijo, por lo que debe crearlas en el tamaño correcto y luego asignar valores a las ranuras de elementos individuales.
Si realmente desea añadir un elemento, entonces por supuesto que es .add(17)
, pero eso no es lo que hizo su código, así que fui con el código de seguridad.
Estoy tan contento de que James Gosling haya despreciado las sobrecargas del operador. –
... donde get (0) devuelve una lista, por supuesto. También observando que 17 está autoboxado a 'nuevo entero (17)' – DNA
outerList.get(0).set(1, 17);
con outerList ser un List<List<Integer>>
.
Recuerde que las matrices bidimensionales no existen. De hecho, son matrices o matrices.
ArrayList<ArrayList<String>> data = new ArrayList<ArrayList<String>>();
data.add(new ArrayList<String>());
data.get(0).add("String");
ArrayList<ArrayList<String>>
contiene elementos de tipo ArrayList<String>
Cada elemento debe ser inicializado
Estos elementos contienen elementos de tipo String
Para conseguir de nuevo la String
"cadena" en la línea 3 ejemplo, usaría
String getValue = data.get(0).get(0);
ArrayList<ArrayList<Integer>> FLCP = new ArrayList<ArrayList<Integer>>();
FLCP.add(new ArrayList<Integer>());
FLCP.get(0).add(new Integer(0));
Cada elemento debe crearse una instancia. Aquí el ArrayList externo tiene un elemento ArrayList, y primero necesita agregar un elemento para referenciarlo usando el método get.
Algunas notas adicionales; después de leer otras respuestas y comentarios:
1> Cada elemento debe crearse una instancia; la inicialización es diferente de la creación de instancias (consulte flexJavaMysql 's answer)
2> En Java, existen arreglos bidimensionales; C# no tiene matrices en 2D (consulte JB Nizet's answer)
la forma que encontré mejor y más conveniente para mí fue declarar ur 2d arrayList y luego también una matriz mono-dimensional normal.
ArrayList<ArrayList<String>> 2darraylist = new ArrayList<>();
ArrayList<String> 1darraylist=new ArrayList<>();
luego llenar la 'lista 1D'array y luego agregar el 1D a la lista de arreglo 2D.
1darraylist.add("string data");
2darraylist.add(idarraylist);
esto funcionará siempre y cuando su problema sea simplemente agregar elementos a la lista. si desea agregarlos a posiciones específicas en la lista, el .get(). set(); es a lo que quieres apegarte.
String[] myList = {"a","b","c","d"};
ArrayList<ArrayList<String>> data = new ArrayList<ArrayList<String>>();
data.add(new ArrayList<String>());
int outerIndex =0;
int innerIndex =0;
for (int i =0; i<list.length; i++) {
data.get(outerIndex).add(innerIndex, list[i]);
innerIndex++;
}
System.out.println(data);
Simple para el bucle para agregar datos a una matriz multidimensional.
Por cada índice externo es necesario agregar
data.add(new ArrayList<String>());
luego incrementar el índice de exterior, y restablecer el índice interno.
Eso se vería así.
public static String[] myList = {"a", "b","-","c","d","-","e","f","-"};
public static ArrayList<ArrayList<String>> splitList(String[] list) {
ArrayList<ArrayList<String>> data = new ArrayList<ArrayList<String>>();
data.add(new ArrayList<String>());
int outerIndex =0;
int innerIndex =0;
for (int i=0; i<list.length; i++) {
System.out.println("will add: " + list[i]);
if(!list[i].contains("-")) {
System.out.println("outerIndex: " + outerIndex +" innerIndex: "+ innerIndex);
data.get(outerIndex).add(innerIndex, list[i]);
innerIndex++;
} else {
outerIndex++; // will move to next outerIndex
innerIndex = 0; // reset or you will be out of bounds
if (i != list.length-1) {
data.add(new ArrayList<String>()); // create an new outer index until your list is empty
}
}
}
return data;
}
public static void main(String[] args) {
System.out.println(splitList(myList));
}
@Joey: ¿qué dudas? Por favor vea el código en la respuesta ya que usa get (...). Get (...). ¿Cómo esto no permite mi comentario anterior? –
Sea cual sea el resultado de 'get (1)', asignarle 17 no lo agregará a la Lista, y seguramente no se compilará de todos modos. – DNA
@Joey: Sí, tienes razón y no estaba pensando. No debe haber suficiente sangre en mi sistema de alcohol en este momento. –