Java - Borrar dato de ArrayList

 
Vista:
sin imagen de perfil

Borrar dato de ArrayList

Publicado por Bill (5 intervenciones) el 13/12/2016 01:57:50
Hola a todos necesito ayuda para pasar a una lista un registro de objetos de un txt, y borrar a uno de los objetos accediendo a uno de sus atributos(su numero de referencia). pero no lo borra

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
ArrayList list=new ArrayList();
    Iterator<Currante> i=list.iterator();
    // Cargamos
Scanner s=new Scanner(new File("Arch.txt"));
while(s.hasNextLine()){
	list.add(s.nextLine());
}
// Eliminamos el txt
 
File F=new File("Arch.txt");
F.delete();
try{
	F.createNewFile();
}catch(IOException ioe){
	System.out.println(" ioe");
}
 
// Solicitamos atributo
 
int g=Integer.ParseInt(JOptionPane.showInputDialog("Introduzca el numero del trabajador"));
 
// Borramos 
 
while(i.hasNext()){
	int h=i.next().getNum();
	if(g==h){
		i.remove();
	}
}

Auxilio.
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

Borrar dato de ArrayList

Publicado por antonio (1 intervención) el 13/12/2016 16:47:06
Hola Bill,

Lo primero de todo, es que no entiendo bien tu explicación al problema.
Lo segundo, es que el código está incompleto y no aparece toda la información necesaria.

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
ArrayList list=new ArrayList();
    Iterator<Currante> i=list.iterator();             --> ¿Que contiene currante? ¿Generas un iterdador de list antes de introducir valores (En el while?
    // Cargamos
Scanner s=new Scanner(new File("Arch.txt"));
while(s.hasNextLine()){
	list.add(s.nextLine());
}
// Eliminamos el txt
 
File F=new File("Arch.txt");
F.delete();                                   --> ¿Porque lo borras recién creado?
try{
	F.createNewFile();
}catch(IOException ioe){
	System.out.println(" ioe");
}
 
// Solicitamos atributo
 
int g=Integer.ParseInt(JOptionPane.showInputDialog("Introduzca el numero del trabajador"));
 
// Borramos 
 
while(i.hasNext()){
	int h=i.next().getNum();
	if(g==h){
		i.remove();
	}
}


Please, contesta a estos comentarios para poder ayudarte, y aclara la explicación inicial para pdoer entender el problema.

Un saludo :-)
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

Borrar dato de ArrayList

Publicado por Bill (5 intervenciones) el 13/12/2016 17:34:30
Currante es un objeto que dispone de sus atributos(nombre,apellidos,num, etcétera); si, creo el iterador antes para usarlo después. He intentado crearlo una vez está el arraylist ya con los datos y sigue sin funcionar.

Borro el archivo de texto cada vez que inicio esta parte del programa para trabajar desde el arraylist, intentando borrar un objeto a través de uno de sus atributos(num), para después volver a guardar en el txt los datos restantes(desde el arraylist).

En el otro apartado del programa se crea un objeto de tipo Currante, se añade al arraylist, y se guarda en el fichero de texto(desde el arraylist).

Saludos.
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

Borrar dato de ArrayList

Publicado por antonio (1 intervención) el 16/12/2016 11:16:47
Hola

1
2
3
4
5
while(i.hasNext()){
	int h=i.next().getNum();
	if(g==h){
		i.remove();
	}

Por lo que parece, no está entrando en ningún momento en el if. Intenta poner un else con un mensaje explicativo y depurar el código para ver los valores de g y h en cada pasada del while.

¿Te dá algún tipo de pete la app?

Coméntanos sobre esta prueba para poder concretar el error del código.

Un saludo.
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

Borrar dato de ArrayList

Publicado por Bill (5 intervenciones) el 16/12/2016 13:47:36
No eso está bien porque desde el arraylist si que lo borra es decir:

crear objeto--->meterlo en el arraylist--->borrarlo con ese fragmento de código(depurando que no lo tenga que cargar de ninguna parte)

Suponiendo que quisiera hacer eso, pero lo que debe hacer el arraylist con el objeto es escribirlo en un txt, y entonces es cuando expongo código que refleja el problema.

Mi intención es volcar el txt volviendo a crear el objeto pero estoy teniendo muchos problemas al pasar los datos ( cadenas,fechas,enum...). Aquí es cuando peta.

Saludos.
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