Java - HASHCODE

   
Vista:

HASHCODE

Publicado por Sergio (10 intervenciones) el 21/05/2010 13:09:31
import java.util.*;

public class MapIt {
public static void main(String[] args) {
boolean b1 = false;
boolean b2 = false;
Set<KeyMaster> set = new HashSet<KeyMaster>();
KeyMaster k1 = new KeyMaster(1);
KeyMaster k2 = new KeyMaster(2);
set.add(k1);
set.add(k1);
set.add(k2);
set.add(k2);
System.out.print(set.size() + ":");
k2.i = 1;
System.out.print(set.size() + ":");
b1 = set.remove(k1);
System.out.print(set.size() + ":");
b2 = set.remove(k2); // <-- porque coño no borra este elemento
System.out.print(set.size());
for(KeyMaster km : set)
System.out.println("\n" + km.i);
if (b1)
System.out.println("Elemento k1 borrado");
else
System.out.println("Elemento k1 no borrado");
if (b2)
System.out.println("Elemento k2 borrado");
else
System.out.println("Elemento k2 no borrado");
}
}

// output
// 2:2:1:1
// 1
// Elemento k1 borrado
// Elemento k2 no borrado

class KeyMaster {
public int i;
public KeyMaster(int i) {
this.i = i;
}
public boolean equals(Object o) { return i == ((KeyMaster)o).i; }
public int hashCode() { return i * 7;}
}

me falta saber porque el elemento k2 no se borra en el HashSet ...
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

RE:HASHCODE

Publicado por aitor (86 intervenciones) el 22/05/2010 12:11:45
una cosa de la interfaz set es que cuando tu introduces un valor se especifica la referencia al elemento. pero si lo modificas la refenercia no cambia pero el elemeto si, por eso tu al modificarlo no lo encuentras y no lo borra.

import java.util.*;

public class MapIt {
public static void main(String[] args) {
boolean b1 = false;
boolean b2 = false;
Set<KeyMaster> set = new HashSet<KeyMaster>();
KeyMaster k1 = new KeyMaster(1);
KeyMaster k2 = new KeyMaster(2);
set.add(k1);
set.add(k1);
set.add(k2);
set.add(k2);
System.out.print(set.size() + ":");
k2.i = 1;
k2.i = 2; //------>si le pones el mismo valor que tenia, la referencia al objeto esta bien y lo borra
System.out.print(set.size() + ":");
b1 = set.remove(k1);
System.out.print(set.size() + ":");
b2 = set.remove(k2); // <-- porque coño no borra este elemento
System.out.print(set.size());
for(KeyMaster km : set)
System.out.println("\n" + km.i);
if (b1)
System.out.println("Elemento k1 borrado");
else
System.out.println("Elemento k1 no borrado");
if (b2)
System.out.println("Elemento k2 borrado");
else
System.out.println("Elemento k2 no borrado");
}
}

// output
// 2:2:1:1
// 1
// Elemento k1 borrado
// Elemento k2 no borrado

class KeyMaster {
public int i;
public KeyMaster(int i) {
this.i = i;
}
public boolean equals(Object o) { return i == ((KeyMaster)o).i; }
public int hashCode() { return i * 7;}
}
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

RE:HASHCODE

Publicado por Sergio (10 intervenciones) el 22/05/2010 12:23:11
gracias aitor, me lo imaginaba que por ahi iban los tiros soy cobolero y estoy a punto de subir a certificarme en el SCJP. No lo tengo muy trabajado y confundo terminos, gracias por la contestación.
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

RE:HASHCODE

Publicado por aitor (86 intervenciones) el 22/05/2010 14:15:17
Sabes cobol?? Tienes manuales es que por la red no hay casi ya que es un lenguaje de programación muy viejo, si encuentras una web donde hayan manuales avisa. Estaba pensando en hacer la certificación en java pero vale mucho dinero
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

RE:HASHCODE

Publicado por aitor (86 intervenciones) el 22/05/2010 14:17:21
Sabes cobol?? Tienes manuales es que por la red no hay casi ya que es un lenguaje de programación muy viejo, si encuentras una web donde hayan manuales avisa. Estaba pensando en hacer la certificación en java pero vale mucho dinero
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

RE:HASHCODE

Publicado por Sergio  (10 intervenciones) el 23/05/2010 11:38:18
Hola aitor, si, se COBOL, te explico, el COBOL es un lenguaje de programación estructurada, nacio en 1960 para aplicar a negocios, normalmente lo utilizan ordenadores de IBM como el AS/400 y el S/390 de IBM y también se utiliza en Unix, el lenguaje en si es muy facil de aprender, donde radica un poco la dificultad es en conocer el entorno en el que se mueve, tambien hay Cobol para PC pero creo que ya no se utiliza en redes de ordenadores. Si, tengo manuales de AS/400 y unos manuales de S/390, no se como podria pasartelos los tengo en mi disco duro, si te interesan dimelo y ya buscaremos forma de que te los pase... esa información la saque de mi empresa de servicios, Ya mirare el foro y me dices como me puedo poner en contacto contigo para pasarte todos mis manuales sobre este tema. Un apunte final en esos ordenadores normalmente se utilizan archivos indexados ISAM o VSAM pero tambien ahora se utiliza la base de datos DB2 de la cual tambien tengo manuales creo que algo hay por internet.
Ya me diras algo un saludo. Por lo demas si veo que esta on-line en la red ya te lo buscare.
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