una recorrer obtener objetos llenar lista imprimir elemento como clase buscar java arraylist

java - recorrer - ¿Cómo iterar a través de ArrayList de objetos?



recorrer arraylist java foreach (5)

Asumiendo fill_data_ es una lista que contiene la lista de objetos de una clase llamada Node.

List<Nodes> filled_data_ = new ArrayList<>(); for (Node data : filled_data_) { data.getVariable1(); data.getVariable2(); }

Más información http://crunchify.com/how-to-iterate-through-java-list-4-way-to-iterate-through-loop/

Tengo una clase llamada SparseMatrix. Contiene una ArrayList of Nodes (también clase). Me pregunto cómo iterar a través de la matriz y acceder a un valor en el nodo. He probado lo siguiente:

//Assume that the member variables in SparseMatrix and Node are fully defined. class SparseMatrix { ArrayList filled_data_ = new ArrayList(); //Constructor, setter (both work) // The problem is that I seem to not be allowed to use the operator[] on // this type of array. int get (int row, int column) { for (int i = 0; i < filled_data_.size(); i++){ if (row * max_row + column == filled_data[i].getLocation()) { return filled_data[i].getSize(); } } return defualt_value_; } }

Probablemente cambie a matrices estáticas (y las rehaga cada vez que agregue un objeto). Si alguien tiene una solución, le agradecería mucho que la compartiera conmigo. Además, gracias de antemano por ayudarme.

Siéntase libre de hacer preguntas si no entiende algo aquí.


Cuando crea el objeto ArrayList , debe especificar el tipo de elementos contenidos con <> corchetes. También es bueno mantener la referencia a la interfaz List , no a la clase ArrayList . Para iterar a través de dicha colección, use el bucle foreach :

Aquí hay un ejemplo de la clase Node:

public class Node { private int value; public Node(int value) { this.value = value; } public void setValue(int value) { this.value = value; } public int getValue() { return value; } }

Aquí hay un ejemplo de la clase principal:

public class Main { public static void main(String[] args) { List<Node> filledData = new ArrayList<Node>(); filledData.add(new Node(1)); filledData.add(new Node(2)); filledData.add(new Node(3)); for (Node n : filledData) { System.out.println(n.getValue()); } } }


Si la lista de arreglos contiene Nodes que define getLocation() , puede usar:

((Nodes)filled_data_.get(i)).getLocation()

También puedes definir

ArrayList<Nodes> filled_data_ = new ArrayList<Nodes>();


Si no usaste genérico, entonces debes lanzar el objeto

//Assume that the member variables in SparseMatrix and Node are fully defined. class SparseMatrix { ArrayList filled_data_ = new ArrayList(); //Constructor, setter (both work) // The problem is that I seem to not be allowed to use the operator[] on // this type of array. int get (int row, int column) { for (int i = 0; i < filled_data_.size(); i++){ Node node = (Node)filled_data.get(i); if (row * max_row + column == node.getLocation()) { return node.getSize(); } } return defualt_value_; }

}


En primer lugar, no deberías usar tipos crudos. Vea este enlace para más información: ¿Qué es un tipo crudo y por qué no deberíamos usarlo?

La solución es declarar el tipo de objeto que contiene su lista de matriz. Cambia la declaración a:

ArrayList<Node> filled_data_ = new ArrayList<>();

Luego puede acceder a cada elemento en la lista de matrices utilizando filled_data_.get(i) (en lugar de filled_data_[i] , que funcionaría para una matriz regular).

`filled_data_.get(i)`

Lo anterior devolverá el elemento en el índice i . Documentación aquí: https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#get(int)