title image


Smiley Re: SortedSet
Wenn man genau darüber nachdenkt, darf man diese Attribute gar nicht ändern. Zitat aus der API Doku von SortedSet:

Note that the ordering maintained by a sorted set (whether or not an explicit comparator is provided) must be consistent with equals if the sorted set is to correctly implement the Set interface



Wenn man aber ein Attribut ändert, dass z.B. für equals() oder hashCode() herangezogen wird, verstößt man gegen den Konsistenzvorsatz von equals().

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#equals(java.lang.Object)



Beispiel:



public class Testi {



public static void main(final String[] args) {

final Set set = new HashSet();

final MyObject o = new MyObject("argh");

set.add(o);

System.out.println("o im Set? " + set.contains(o)); // true

o.attribute = "ugh";

System.out.println("o im Set? " + set.contains(o)); // false

}



private static class MyObject {



String attribute;



public MyObject(final String attribute) {

this.attribute = attribute;

}



public boolean equals(final Object o) {

if (this == o) return true;

if (!(o instanceof MyObject)) return false;



final MyObject myObject = (MyObject) o;



if (attribute != null ? !attribute.equals(myObject.attribute) : myObject.attribute != null) return false;



return true;

}



public int hashCode() {

return (attribute != null ? attribute.hashCode() : 0);

}



}



}


VG, Bernd


Smart-Questions: smart-questions_de

SSCCE: Short, Self Contained, Correct (Compilable), Example

Posting... And You: http://de.youtube.com/watch?v=Uw5-GOG8SXo




geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: