objetos metodos llenar imprimir enteros como clase java collections pojo

metodos - imprimir arraylist java



ArrayList-¿Cómo modificar un miembro de un objeto? (11)

Tengo varios objetos de Customer almacenados en una ArrayList. Mi clase de Customer tiene 2 miembros de datos: Name y Email . Ahora quiero modificar solo el Email para el cliente "Doe".

Ahora, si "Doe" se encuentra en el índice 3 en la lista, sé que puedo escribir esta línea:

myList.set( 3, new Customer( "Doe", "[email protected]" ) );

Pero eso significa crear un nuevo objeto. Si tengo una lista muy grande, supongo que el proceso sería muy lento. ¿Hay alguna otra forma de acceder directamente al miembro de datos de un Objeto almacenado en un ArrayList, tal vez utilizando otro tipo de Colección que ArrayList?


Bueno, has usado la Entidad Pojo para que puedas hacer esto. Necesitas obtener objeto de eso y tienes que configurar datos.

myList.get(3).setEmail("email");

de esa manera puedes hacer eso. o u puede configurar otro parámetro también.


Fijo. Me equivoqué: esto solo se aplica en la reasignación de elementos. Pensé que el objeto devuelto no hacía referencia al nuevo.

Se puede hacer.

Q : ¿Por qué?
A : El método get () devuelve un objeto que hace referencia al original.
Por lo tanto, si escribe myArrayList.get(15).itsVariable = 7
o
myArrayList.get(15).myMethod("My Value") ,
en realidad está asignando un valor / utilizando un método del objeto referenciado por el devuelto (esto significa que el cambio se aplica al objeto original)

Lo único que no puedes hacer es myArrayList.get(15) = myNewElement . Para hacer esto tienes que usar el método list.set() .


Intenta esto. Esto funciona mientras recorres el código y modificas los campos a la vez de todos los elementos de Arraylist.

public Employee(String name,String email){ this.name=name; this.email=email; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setEmail(String email) { this.email = email; } public String getEmail() { return email; } for(int i=0;i++){ List.get(i).setName("Anonymous"); List.get(i).setEmail("[email protected]"); }


Puede iterar a través de arraylist para identificar el índice y, finalmente, el objeto que necesita modificar. Puede utilizar para-cada para el mismo que a continuación:

for(Customer customer : myList) { if(customer!=null && "Doe".equals(customer.getName())) { customer.setEmail("[email protected]"); break; } }

Aquí, el cliente es una referencia al objeto presente en Arraylist. Si cambia alguna propiedad de esta referencia del cliente, estos cambios se reflejarán en su objeto almacenado en Arraylist.


Puede simplemente obtener una parte de la colección y luego modificar los atributos del cliente en el que acaba de hacer una "obtención". No es necesario modificar la colección ni es necesario crear un nuevo cliente:

int currentCustomer = 3; // get the customer at 3 Customer c = list.get(currentCustomer); // change his email c.setEmail("[email protected]");


Puedes hacerlo:

myList.get(3).setEmail("new email");


Si necesita una búsqueda rápida (básicamente tiempo constante) de un objeto almacenado en su colección, debe usar Mapa en lugar de Lista.

Si necesita una iteración rápida de los objetos, debe usar Lista.

Así que en tu caso ...

Map<String,Customer> customers = new HashMap<String,Customer>(); //somewhere in the code you fill up the Map, assuming customer names are unique customers.put(customer.getName(), customer) // at some later point you retrieve it like this; // this is fast, given a good hash // been calculated for the "keys" in your map, in this case the keys are unique // String objects so the default hash algorithm should be fine Customer theCustomerYouLookFor = customers.get("Doe"); // modify it theCustomerYouLookFor.setEmail("[email protected]")


Sin función aquí es ... funciona bien con listArrays llenos de objetos

ejemplo `

al.add(new Student(101,"Jack",23,''C''));//adding Student class object al.add(new Student(102,"Evan",21,''A'')); al.add(new Student(103,"Berton",25,''B'')); al.add(0, new Student(104,"Brian",20,''D'')); al.add(0, new Student(105,"Lance",24,''D'')); for(int i = 101; i< 101+al.size(); i++) { al.get(i-101).rollno = i;//rollno is 101, 102 , 103, .... }



Te escribí 2 clases para mostrarte cómo se hace; Principal y cliente. Si ejecuta la clase principal, verá lo que está pasando:

import java.util.*; public class Customer { private String name; private String email; public Customer(String name, String email) { this.name = name; this.email = email; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return name + " | " + email; } public static String toString(Collection<Customer> customers) { String s = ""; for(Customer customer : customers) { s += customer + "/n"; } return s; } } import java.util.*; public class Main { public static void main(String[] args) { List<Customer> customers = new ArrayList<>(); customers.add(new Customer("Bert", "[email protected]")); customers.add(new Customer("Ernie", "[email protected]")); System.out.println("customers before email change - start"); System.out.println(Customer.toString(customers)); System.out.println("end"); customers.get(1).setEmail("[email protected]"); System.out.println("customers after email change - start"); System.out.println(Customer.toString(customers)); System.out.println("end"); } }

para ejecutar esto, haga 2 clases, Principal y Cliente y copie y pegue los contenidos de ambas clases en la clase correcta; A continuación, ejecute la clase principal.


Utilice myList.get(3) para obtener acceso al objeto actual y modificarlo, asumiendo que las instancias del Customer tienen una forma de ser modificada.