Generic

wesa

Mitglied
Hallo,

es wäre super, wenn mir jemand bei folgender Aufgabe helfen könnte:

Implementieren Sie die folgende Vektorklasse mittels Generics, d.h.
der Typ für die Elemente wird durch ein Generic Parameter T spezifiziert. Die
Vektorklasse sollte mindestens folgende Methoden besitzen:
• int size() // liefert die Anzahl der Elemente zurück
• void push_back(T arg) // fügt ein neues Element am Ende ein
• void push_front (T arg) // fügt ein neues Element am Anfang ein
• T get(int i) // liefert das i-te Element
• void set(int i, T arg) // setzt das i-te Element auf arg


Java:
class MyVector {

   private Object[] mObjects;
   private final int mIncWidth;
   private int mNextFree;

   public MyVector(int initialCapacity,int capacityIncrement) {
      mIncWidth = capacityIncrement;
      mNextFree = 0;
      mObjects = new Object[initialCapacity];
   }
   
   public MyVector(int initialCapacity) {
      this(initialCapacity,0);
   }
   
   public MyVector() {
      this(1,0);
   }
   
   public void addElement(Object obj) {
      if (mNextFree >= mObjects.length) {
            resize();
      }
      mObjects[mNextFree++] = obj;
   }
   
   private void resize() {
      final int newSize = mIncWidth==0
                               ? mObjects.length * 2
                               : mObjects.length + mIncWidth;
      Object[] newObjects = new Object[newSize];
      for(int i = 0;i < mObjects.length;++i) {
                  newObjects[i] = mObjects[i];
      }
      mObjects = newObjects;
   }
}

Java:
import java.lang.*;
class LongTime {
   public static void makeALotInsertion(MyVector vec) {
         long lStart = System.currentTimeMillis();
         for(int i = 0;i < 20000;++i)
                  vec.addElement(new Integer(i));
         long lEnd = System.currentTimeMillis();
         System.out.println("Zeit in mSec.: " + (lEnd - lStart));
   }
   
   public static void main(String[] args) {
         MyVector vec1 = new MyVector(1000,1);
         MyVector vec2 = new MyVector(1000,0);
         makeALotInsertion(vec1);
         makeALotInsertion(vec2);
   }
}

da ich bisher noch nix mit generics zutun hatte, wäre Hilfe echt nett :)
 
Zuletzt bearbeitet von einem Moderator:

Noctarius

Top Contributor
Wo genau ist denn dein Problem, ohne Frage kann man nicht helfen.
Hast du schon etwas über Generics gelesen?

PS: Ich hab den Code mal lesbar gemacht (allein die Klammerung war unlesbar, ich hoffe das hat dir keiner so beigebracht).
 

wesa

Mitglied
also mein Problem liegt darin, dass ich zwar die Vorlesungen soweit verstehe, aber
nicht selbstständig programmieren kann, trotz Übung. Da wir aber im Semester
drei Übungen vorstellen müssen, bin ich auf etwas Hilfe angewiesen.

Generics kam jetzt erst in der Vorlesung dran und ich habe verstanden, dass
Klassen in mehreren Typen parametrisiert werden können, aber wie ich da jetzt
vorgehen soll, ist mir wie meist ein Rätsel.
 

Neue Themen


Oben