Acces an ArrayList on a different method (same class)

Tags: , ,



im trying to acces the ArrayList “Lista” (with the modifications it had in the “Guardar” method) in the “verJugadores” method, is this possible? When I print the ArrayList of the “seePlayer” method I notice that it is empty, However, the one on the method “save” has an element inside of it (the attributes are assigned a value on another class), here is the code:

public class Jugador extends VentanaJugador{
private int puntuacion;
String edad1, edad;
String nombre;
String nom;
ArrayList<Jugador>lista=new ArrayList<>();
Jugador hola;

    public Jugador() {
        super();
    }
    

    public Jugador(int puntuacion, String nombre, String edad1, ArrayList lista) {
        super();
        this.hola = new Jugador();
        this.puntuacion = puntuacion;
        this.nombre = nombre;
        this.edad1 = edad1;
        this.lista = lista;
    }

    public int getPuntuacion() {
        return puntuacion;
    }

    public void setPuntuacion(int puntuacion) {
        this.puntuacion = 0;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getEdad() {
        return edad1;
    }

    public void setEdad(String edad1) {
        this.edad1 = edad1;
    }
    
    
     @Override
public String toString() {
    return "Nombre: " + this.getNombre() + "n" +
           "Edad: " + this.getEdad();
}

    /**
     *
     * @param nom
     * @param edad
     * @return
     */
    public ArrayList guardar(String nom, String edad){
    nombre = nom;
    edad1=edad;
    this.hola = new Jugador(puntuacion, nombre, edad1, lista);
    lista.add(hola);
        System.out.println("*******************");
        System.out.println("Nombre: "+hola.getNombre()+"n"+
                "Edad: "+hola.getEdad()+"n"+
                        "Puntuacion Inicial: "+hola.getPuntuacion());
        System.out.println("*******************");
    return lista;
        
        
    
}
   
    public void verJugadores(){
        System.out.println("*******************");
        System.out.println("La lista de jugadores es:"+
                "n"+
                "*******************");
        if(lista.isEmpty()){
            System.out.println("La lista esta vacia");
        }else{
    for (int i=0;i<lista.size();i++) {
        System.out.println("Nombre: "+lista.get(i).getNombre());
        System.out.println("Edad: "+lista.get(i).getEdad());
        System.out.println("Puntuacion: "+lista.get(i).getPuntuacion());
    }
    }
    }
    
   

}

Answer

From your guardar method, call verJugadores method, and while doing so send your ArrayList, in this case lista, as a parameter.

public ArrayList guardar(String nom, String edad){
    nombre = nom;
    edad1=edad;
    this.hola = new Jugador(puntuacion, nombre, edad1, lista);
    lista.add(hola);
        System.out.println("*******************");
        System.out.println("Nombre: "+hola.getNombre()+"n"+
                "Edad: "+hola.getEdad()+"n"+
                        "Puntuacion Inicial: "+hola.getPuntuacion());
        System.out.println("*******************");

    
    verJugadores(lista); // calling the verJugadores method. 
    return lista;

Then, make changes in your verJugadores accordingly.

public void verJugadores(ArrayList<Jugador> lista){ // here parameter added.. 
        System.out.println("*******************");
        System.out.println("La lista de jugadores es:"+
                "n"+
                "*******************");
        if(lista.isEmpty()){
            System.out.println("La lista esta vacia");
        }else{
    for (int i=0;i<lista.size();i++) {
        System.out.println("Nombre: "+lista.get(i).getNombre());
        System.out.println("Edad: "+lista.get(i).getEdad());
        System.out.println("Puntuacion: "+lista.get(i).getPuntuacion());
    }

    

Since arraylist is a non-primitive data type, the parameter in the verJugadores method will refer to the same lista.

I hope I was able to answer your question..



Source: stackoverflow