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


0