/ HomePage / Computer / Software / Programmierung / Schnipsel
Java Schnippsel und Beispiele
Diese Schnippsel und Code-Beispiele beziehen sich allein auf Java
Strings überprüfen
==
- I kill you!!!
- Vergleiche tätigt man in Java grundsätzlich IMMER mit
boolean String1.equals(String2) NIE und NIMMER mit '=='
Teilstrings suchen
int x = String.indexOf("SearchString")
- x ist -1 wenn nichts gefunden wurde, sonst die x. Stelle.
matches(regexp)
hashcode() / equals()
Regel: Wenn man ein Klasse selbst erstellt und diese in Collections z.B. HashMaps verwenden möchte, muss man die Methoden hashcode() und equals() selbst implementieren. Siehe Hashing and Cloning
Hier mal eine Idee, es über Reflections zu erledigen. Ok, Reflections sind teuer, aber bei weitem nicht so teuer, wie ein
Erstellen eines neuen Objektes aus z.B. der Datenbank heraus.
/**
* Berechnet den Hashcode der Klasse
*/
@Override
public int hashCode() {
// hier muss entschieden werden, ob die Superklasse ein Object ist, dann darf man super.hashCode() nicht verwenden
// sonst die super.hashCode() rufen
final int prime = 31;
// final int prime = super.hashCode();
int result = 1;
Field[] declaredFields = this.getClass().getDeclaredFields();
for (Field aField : declaredFields) {
try {
Object o = aField.get(this);
result = prime * result + ((o == null) ? 0 : o.hashCode());
}
catch (IllegalAccessException? ex) {
result = prime * result;
}
}
return result; // prime * result + super.hashCode();
}
/**
* Tiefer Vergleich des Objektes other mit uns selbst.
*/
@Override
public boolean equals(Object other) {
// Prüfen ob other wir selbst sind
if (this == other) {
return true;
}
if (other == null) {
return false;
}
if (getClass() != other.getClass()) {
return false;
}
// Auch hier, die Superkasse darf nur gerufen werden, wenn es NICHT Object ist
// if (!super.equals(other)) {
// return false;
// }
MeineKlasse? otherTO = (MeineKlasse?) other;
Field[] declaredFields = this.getClass().getDeclaredFields();
for (Field aField : declaredFields) {
try {
Object o = aField.get(this);
Object other_o = aField.get(otherTO);
if (o == null) {
if (other_o != null) {
return false;
}
}
else if (!o.equals(other_o)) {
return false;
}
}
catch (IllegalAccessException? ex) {
return false;
}
}
return true;
}