Tengo arraylists llamados sub y main,
ArrayList main = new ArrayList();
ArrayList sub=new ArrayList();
agrego valor a sub y luego agrego sub a main.
ejemplo;
sub.add(1);
sub.add(2);
main.add(sub);
ahora quiero obtener todos los valores dentro de sub
so i used following one but .get(j) gives me the error get >> canot find symbol
for (int i=0;i<main.size();i++) {
System.out.println();
for (int j=0;j<sub().size();j++) {
System.out.print(main.get(i).get(j));//error line
}
}
¿Cómo puedo obtener todos los valores dentro del subconjunto de la lista principal?
Respuestas
3 para la respuesta № 1Cuando declaras una variable como
ArrayList main;
Esta lista contiene Object
s. Esto significa que main.get(i)
solo devolverá un Object
, incluso si agrega ArrayList
s. Es por eso que obtienes un error de compilación: Object
no tiene un método llamado get()
.
Para solucionar el problema, debe usar genéricos:
ArrayList<List<Integer>> main = new ArrayList<>();
ArrayList<Integer> sub=new ArrayList<>();
Ahora get()
devolverá un List<Integer>
que tiene un get()
método, por lo que el error del compilador desaparecerá.
2 para la respuesta № 2
Los genéricos podrían ser tu amigo aquí:
ArrayList<ArrayList<Object>> main = new ArrayList<ArrayList<Object>>(); // or new ArrayList<>(); in Java 7+
ArrayList<Object> sub = new ArrayList<Object>(); // or new ArrayList<>();
Si no puede "t o don" no quiere usar genéricos, la solución es emitir la expresión main.get(i)
a una ArrayList
primero:
System.out.println(((ArrayList) main.get(i)).get(j));
1 para la respuesta № 3
Ir a través del siguiente código
public class ArrayListDemo {
public static void main(String[] args) {
List<List<Integer>> main = new ArrayList<>();
List<Integer> sub = new ArrayList<>();
sub.add(1);
sub.add(2);
main.add(sub);
//If you want to get values in sub array list
for(int i = 0; i < 1; i++){
List<Integer> arr = main.get(i);
for(Integer val : arr) System.out.println(val + "");
}
//If you want to print all values
for(List<Integer> list : main){
for(Integer val : list) System.out.println(val + "");
}
}
}
En el código anterior, había declarado una ArrayList(principal) para mantener todas las matrices que tienen valores enteros. También había declarado otra ArrayList (sub) para mantener todos los valores Integer. Había utilizado la estructura de datos de ArrayList debido a que la longitud de la Lista cambiará el tiempo de ejecución
Buena suerte !!!