14. december 2003 - 20:58
Der er
8 kommentarer og 1 løsning
en remove der ikke virker på en vector
Hej! Jeg har følgende stykke kode: Vector liste = base.hentFilLejligheder(); liste.remove(boligannonce); System.out.println(liste.size()); base.skrivFilLejlighed(liste); liste.remove virker ikke. Det er lidt underligt, for erstatter jeg den med liste.add, så virker det fint... Nogen der kan sige mig hvorfor? Gala
Annonceindlæg fra Academic Work Denmark A/S
14. december 2003 - 21:01
#1
Den burde virke. *MEN* har den klasse som boligannonce tilhører en fornuftig equals metode ?
14. december 2003 - 21:02
#2
hm, ikke nogen særlig naj, men hvad skulle sådan en se ud som og hvad skulle den hjælpe?
14. december 2003 - 21:03
#3
Object equals som alle objekter arver tester kun om objekterne er samme objekt d.v.s. ligger samme sted i memory. Du skal lave en equals som sammenligne rindholdet af objektet.
14. december 2003 - 21:03
#4
Fordi, som der står om remove: Removes the first occurrence of the specified element in this Vector If the Vector does not contain the element, it is unchanged. More formally, removes the element with the lowest index i such that (o==null ? get(i)==null : o.equals(get(i))) (if such an element exists). uden equals ved den jo ikke hvilken du vil af med ;)
14. december 2003 - 21:04
#5
men det sjove er at det jo BURDE være samme objekt....
14. december 2003 - 21:04
#6
Her er et eksempel på en klasse med en equals: class Something { private int num = 0; private String str = null; public Something(int num, String str) { this.num = num; this.str = str; } public int getNum() { return num; } public String getStr() { return str; } public void setNum(int num) { this.num = num; } public void setStr(String str) { this.str = str; } public boolean equals(Object o) { if (o instanceof Something) { if (((Something)o).num == num && ((Something)o).str.equals(str)) { return true; } else { return false; } } else { return false; } } }
14. december 2003 - 21:05
#7
ah! kan godt se det.
14. december 2003 - 21:07
#8
Ovenstående kode burde iøvrigt også have en: public int hashCode() { return num+str.hashCode(); } for at overholde spille reglerne.
14. december 2003 - 21:52
#9
OK ?
Kurser inden for grundlæggende programmering