Java - Trabajo con Arraylist

 
Vista:
sin imagen de perfil
Val: 25
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Trabajo con Arraylist

Publicado por koenig11 (8 intervenciones) el 19/06/2020 18:17:05
Buenas, soy novato en programación, a ver si me pueden ayudar con esto..
Tengo una clase que hace de base de datos usando Arraylist y hashmap. En esa clase tengo un Arraylist de tipo String (almacena nombres de usuario) y diferentes metodos, entre ellos, un metodo getter que devuelve dicho Array. Mi problema es que no sé como hacer para mostrar los elementos del Array (tipica lista de nombres de usuario) desde un metodo en otra clase diferente. No sé si me habré explicado del todo bien...
Gracias de antemano, saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 2.717
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Trabajo con Arraylist

Publicado por Kabuto (706 intervenciones) el 19/06/2020 19:12:25
Pues en el método de la otra clase, haces que reciba ese ArrayList por argumento (puesto que tu clase actual ya tienen un getter para el ArrayList) y lo recorres con un bucle, un for each por ejemplo.

Algo como esto, que luego puedes elaborar más:

1
2
3
4
5
6
public void mostrarArrayList(ArrayList<String> lista) {
 
    for (String elemento: lista)
        System.out.println(elemento);
 
}

Luego en el main donde trabajes con estas clases, puedes comunicarlas con algo parecido a esto:

1
clase2.mostrarArrayList(clase1.getArrayListNombres());
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Trabajo con Arraylist

Publicado por koenig11 (8 intervenciones) el 21/06/2020 12:50:16
Gracias por la respuesta, pero no entiendo del todo bien lo que me dices.. te dejo el código que estoy usando en la clase main y que no me funciona.

//ServicioDatosInterface es la clase hace de BBDD, que tiene el arraylist y el metodo getter.
1
private static ServicioDatosInterface dataService;

más código no relevante...

//Metdo que uso para listar los elementos del array
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private static  void listPlayers() {
    List<String> tmpList;
    try {
    tmpList = dataService.getRegisteredPlayers();
    if (!tmpList.isEmpty()) {
        for (String s : tmpList) {
          System.out.println(s);
        }
      } else {
        System.out.println("No hay jugadores registrados para mostrar.");
      }
    } catch (RemoteException e) {
      e.printStackTrace();
    }
  }

Lo del try-catch es porque es una aplicación distribuida con Java RMI, intento de aplicación, mejor dicho...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 2.717
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Trabajo con Arraylist

Publicado por Kabuto (706 intervenciones) el 22/06/2020 12:58:02
En principio el código parece correcto.
¿Exactamente qué ocurre cuando se ejecuta este código?
¿Nada?
¿Da error?
¿Se cumple alguna condición del if? Es decir, ¿muestra al menos el mensaje:"No hay jugadores registrados para mostrar."?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Trabajo con Arraylist

Publicado por koenig11 (8 intervenciones) el 22/06/2020 13:03:11
Me tira el siguiente error "java.lang.NullPointerException" en la linea 4 del fragmento de codigo de mas arriba, asi que ahi queda la ejecucion...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 1.623
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Trabajo con Arraylist

Publicado por Rodrigo (429 intervenciones) el 22/06/2020 15:59:08
Te falta asignar un valor al miembro dataService. Lo asignas en alguna parte de tu codigo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Trabajo con Arraylist

Publicado por koenig11 (8 intervenciones) el 22/06/2020 16:08:23
La verdad es que no sé a que te refieres, si me lo pudieses explicar te lo agradecería.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 1.623
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Trabajo con Arraylist

Publicado por Rodrigo (429 intervenciones) el 22/06/2020 16:28:43
Asignale algo a dataService.
Si no lo haces, esa campo sera null.

El codigo que omitiste indicando que no era relevante podria ser interesante de mirar ahora.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Trabajo con Arraylist

Publicado por koenig11 (8 intervenciones) el 22/06/2020 16:39:54
Este es todo el código de la clase.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package basededatos;
 
import java.net.UnknownHostException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.List;
 
import common.Gui;
import common.Utils;
import interfaces.ServicioDatosInterface;
 
public class Basededatos {
 
	private static ServicioDatosInterface dataService;
	private static int registryPort = 8888;
 
	public static void main(String[] args) throws Exception {
 
		Utils.setCodeBase(interfaces.ServicioAutenticacionInterface.class);
 
		startRegistry(registryPort);
 
		//inicializar servicio de datos
		ServicioDatosImpl dataService = new ServicioDatosImpl();
		Naming.rebind("rmi://localhost:" + registryPort + "/data", dataService);
		System.out.println("Servicio de datos listo.");
 
		gui();
	}
 
 
        //iniciar registro
	private static void startRegistry (int registryPort) throws RemoteException {
 
		try {
			Registry registry = LocateRegistry.getRegistry(registryPort);
			registry.list();
		} catch (RemoteException exc) {
			System.out.println("No existe un registro valido en el puerto: " + registryPort);
			Registry registry = LocateRegistry.createRegistry(registryPort);
			System.out.println("Registro creado en el puerto: "+ registryPort);
		}
 
	}
 
	private static void stopServices () throws RemoteException {
		try {
		Naming.unbind("remi://localhost:" + registryPort + "/data");
		} catch (Exception e) {
		}
	}
 
 
	private static  void gui() throws RemoteException, UnknownHostException {
		int opt = 0;
 
		do {
			opt = Gui.menu("Menu BBDD", new String [] {
															"Informacion de la base de datos",
															"Listar jugadores registrados",
															"Salair(logout)"});
			switch (opt) {
				case 0: infoBBDD();
				break;
				case 1: listPlayers();
				break;
			}
 
		}	while (opt != 2);
 
	}
 
	//informacion bbdd
	private static String  infoBBDD() throws UnknownHostException {
		return "rmi://" + java.net.InetAddress.getLocalHost().getHostAddress() + ":" + registryPort + "/" + dataService;
	}
 
	//listar jugadores
	private static  void listPlayers() {
		List<String> tmpList;
		try {
		tmpList = dataService.getRegisteredPlayers();
		if (!tmpList.isEmpty()) {
				for (String s : tmpList) {
					System.out.println(s);
				}
			} else {
				System.out.println("No hay jugadores registrados para mostrar.");
			}
		} catch (RemoteException e) {
			e.printStackTrace();
		}
	}
}

No está terminado del todo, aun faltan cosas. No quiero seguir avanzando sin solucionar ese problema que tengo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 1.623
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Trabajo con Arraylist

Publicado por Rodrigo (429 intervenciones) el 22/06/2020 17:10:04
En la linea 26 estas creando una nueva variable, no estas asignando el campo

1
ServicioDatosImpl dataService = new ServicioDatosImpl();

Quita el tipo de esa instruccion dejandolo asi

1
dataService = new ServicioDatosImpl();

Con esto estaras asignando al campo miembro, y en la linea 84 tendra un valor y no sea null como ahora.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 25
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Trabajo con Arraylist

Publicado por koenig11 (8 intervenciones) el 22/06/2020 17:24:31
Muchas gracias por la ayuda, era exactamente eso. Estaba cometiendo el mismo error en otras partes del código ademas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar