Main /

Java Schnippsel

Java Schnippsel

/ 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 en

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;
  }
Frische Änderungen | Menü editieren
zuletzt geändert am 02.02.2012 10:52 Uhr von Lars
Edit Page | Page History