Java Klasse Arrays

    • Java:

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Java Klasse Arrays

      Hallihallo hallöchen,

      komme gerade nicht klar mit dieser Klasse.
      Soll ein Array zum Speichern sein und sich selbst vergrößern.
      Und zwar klappt einmal meine Arrayumdrehung nicht so ganz!
      und anscheinend habe ich auch nicht die Equals richtig hinbekommen.

      Wäre jemand so freundlich mal drüber zu schauen?

      public final class Array<T> {
      /**
      * Kennung "nicht gefunden".
      */
      private static final int NOT_FOUND = -1;

      /**
      * Anzahl der gespeicherten Datenelemente
      */
      private int size = 0;
      /**
      * Array zum Speichern der Daten.
      */
      private Object[] data = new Object[2];

      /**
      * Gibt die Anzahl der gespeicherten Inhalte zurueck.
      *
      * @return Anzahl der Inhalte
      */
      public int size() {
      return size;
      }

      /**
      * Gibt das index-te Element zurueck. Nur erlaubt, wenn genuegend viele
      * Elemente gespeichert sind.
      *
      * @param index
      * Elementnummer
      * @return gewaehltes Element
      * @throws IndexOutOfBoundsException
      * wenn <tt>index</tt> illegal ist.
      */
      @SuppressWarnings("unchecked")
      public T get(int index) {
      checkIndex(index);
      return (T) data[index];
      }

      /**
      * Speichert Inhalt. Das Objekt wird als letztes Element hinzugefuegt.
      *
      * @param neu
      * zu speichernde Transkation.
      */
      public void add(T neu) {
      if (size == data.length)
      increaseCapacity();
      // TODO: ergaenzen
      data[size++] = neu;

      }

      /**
      * Gibt ein Feld zurueck, das die umgekehrte Elementreihenfolge hat. Das
      * this-Objekt und seine Atribute werden nicht veraendert!
      *
      * @return neues umgedrehtes Array
      */
      public Array<T> reversed() {
      // TODO: das ist komplett verkehrt!!
      // (wieso eigentlich?)
      //
      // Hinweis es kann auch sein, dass Sie bei der richtigen Loesung
      // einen Cast (T) benoetigen.
      /*
      for (int i = 0, r = data.length -1; i < ((data.length)/2); i++, r--) {
      Object temp = data[i];
      data[i] = data[r];
      data[r] = temp;
      }*/

      /*
      int i = 0;
      int j = data.length - 1;
      Object tmp;
      while (j > i) {
      tmp = data[i];
      data[i] = data[j];
      data[j] = tmp;
      j--;
      i++;
      }
      */

      Object[] data2 = new Object[data.length];
      for(int i = 0,j = data.length-1; i<data.length /2;i++,j--)
      {
      data2[i] = data[j];
      }

      return this;
      }

      /**
      * Gibt den Index des ersten Vorkommens von <tt>gesucht</tt> zurueck.
      *
      * @param gesucht
      * Objekt das gesucht wird.
      * @return Index des ersten Vorkommens oder -1 wenn nicht gefunden.
      */
      public int indexOf(T gesucht) {
      // TODO: selbst programmieren
      // Hinweis: safeEquals benutzen!
      for(int i = 0;i<data.length;i++)
      {
      if(safeEquals(gesucht,data[i]) == true)
      {
      return i;
      }

      }
      return NOT_FOUND;
      }



      /**
      * Sicherer Vergleich zweier Objekte auf Gleichheit.
      * Auch der Vergleich mit {@code null} ist korrekt.
      *
      * @param a erstes Objekt
      * @param b zweites Object
      *
      * @return {@code} true wenn beide Objekte gleich sind oder wenn beide
      * Objekte {@code null} sind
      */
      private static boolean safeEquals(Object a, Object b) {
      //TODO: selbst programmieren
      if(a.equals(b) == true || a.equals(null)== true && b.equals(null)== true)
      {
      return true;
      }
      else
      {
      return false;
      }
      }

      /**
      * Ersetzt das bestehende Array durch ein Array doppelter Groesse.
      */
      private void increaseCapacity() {
      // Todo: das ist nicht ganz richtig
      Object[] t = new Object[2 * data.length];
      for (int i = 0; i < data.length; i++)
      t[i] = data[i];


      }

      /**
      * Prueft ob <tt>index</tt> im erlaubten Bereich von 0 bis Anzahl der
      * Elemente - 1 liegt.
      *
      * @param index
      * zu pruefender Index
      * @throws IndexOutOfBoundsexception
      * wenn <tt>index</tt> ausserhalb des erlaubten Bereichs liegt.
      */
      private void checkIndex(int index) {
      if (index < 0 || index >= size)
      throw new IndexOutOfBoundsException(index + " nicht erlaubt");
      }
      }
    [ Barcodescanner | …finden und gefunden werden | IconShock Icons | Klassische PC-Spiele ]
    [ Webmaster Bibel | IT-System-Kaufleute | Datenrettung Service | Greensmilies | Avatare | Autokredit online | Computer Forum ]