StackArray<E>

Hallo:)
Ich muss eine Klasse StackDynamic<E> ( verwendet intern eine dynamische Datenstruktur ) implementieren die die Methoden
  • public E remove (int n) //removes the n-th item of this stack and returns it (head has number 0)//return null, if no n-th item exists
  • public E peekAt (int n) //returns the n-th item of this stack without removing it (head has number 0)//returns null, if no n-th item exists
beinhaltet. Bis jetzt schaut meine Klasse so aus:

import java.util.ArrayList;

public class StackArray<E> {

private ArrayList<E> stack;

public StackArray () {

this.stack = new ArrayList<>();

}

public void push (E item) {

stack.add(item);

}

public E pop () {

if (!isEmpty()) {
E h = stack.get(size() - 1);
stack.remove(size() - 1);
return h;
}

return null;

}

public E peek () {

if (!isEmpty()) {
return stack.get(size() - 1);
}
return null;

}

public boolean isEmpty() {

return stack.isEmpty();

}




public int size () {

return stack.size();

}

public String toString () {

String s = "[";

for (int i = size() - 1; i >= 0; i--) {
E h = stack.get(i);
s = s + h + ", ";
}

return s + "]";

}

public BasicIterator<E> getIterator() {


return new MyIterator();

}

private class MyIterator implements BasicIterator<E> {

private int now;

MyIterator () {
if (stack.size() > 0) {
this.now = stack.size() - 1;
}
else {
this.now = -1;
}
}

public boolean hasNext() {

if (now <= 0) {
return false;
}
else {
return true;
}

}

public E getNext() {

if (!hasNext()) {
return null;
}
else {
now = now - 1;
return stack.get(now);
}

}
}
}


Aber ich verstehe nicht wie ich peekAt() und remove() hinzufügen soll. Kann mir bitte wer helfen? 😔
 

temi

Top Contributor
Verwende bitte Codetags: Die drei Punkte rechts vom Smiley -> Code -> Java.

Ich muss eine Klasse StackDynamic<E> implementieren
Warum heißt deine Klasse dann StackArray?

Aber ich verstehe nicht wie ich peekAt() und remove() hinzufügen soll. Kann mir bitte wer helfen? 😔
Was ist das Problem? Kannst du genauer beschreiben, womit du Schwierigkeiten hast?

Das "Hinzufügen" funktioniert, genau wie bei den anderen Methode der Klasse. Füge innerhalb des Klassenbodys (und außerhalb der anderen Methoden) ein:
Java:
public E remove (int n) {
    // hier dein Code
}

public E peekAt (int n) {
    // hier dein Code
}
 

temi

Top Contributor
ich weiß wie man klassen hinzufügt. ich weiß nur nicht wie ich den code schreiben soll da
Du sollst aber keine Klassen hinzufügen, sondern Methoden ;)

Der fehlende Code ist doch nicht wesentlich anders, als der, den du schon hast. Du greifst bisher immer auf das letzte Element in der Arrayliste zu und sollst nun auf das n-te Element zugreifen. Denk mal drüber nach.
 
K

kneitzel

Gast
Also irgendwie ist das doch lachhaft. Du hast ja noch nicht mal eigene Strukturen sondern nutzt intern nur die ArrayList...

Aber wie dem auch sei. Schau Dir deinen Code einfach mal an. Du hast doch schon alles. Schau Dir doch einmal peep und pop an... wenn du die verstanden hast, dann ist es doch trivial, denn da wird ja erst eine Position bestimmt um diese dann zu nutzen ...
 
Du sollst aber keine Klassen hinzufügen, sondern Methoden ;)

Der fehlende Code ist doch nicht wesentlich anders, als der, den du schon hast. Du greifst bisher immer auf das letzte Element in der Arrayliste zu und sollst nun auf das n-te Element zugreifen. Denk mal drüber nach.
dankeschön
Du sollst aber keine Klassen hinzufügen, sondern Methoden ;)

Der fehlende Code ist doch nicht wesentlich anders, als der, den du schon hast. Du greifst bisher immer auf das letzte Element in der Arrayliste zu und sollst nun auf das n-te Element zugreifen. Denk mal drüber nach.
vielen dank
 
Also irgendwie ist das doch lachhaft. Du hast ja noch nicht mal eigene Strukturen sondern nutzt intern nur die ArrayList...

Aber wie dem auch sei. Schau Dir deinen Code einfach mal an. Du hast doch schon alles. Schau Dir doch einmal peep und pop an... wenn du die verstanden hast, dann ist es doch trivial, denn da wird ja erst eine Position bestimmt um diese dann zu nutzen ...
bei solchen antworten traut man sich nicht mal zu mehr zu fragen... tut mir leid dass ich erst im erst angefangen hab zu studiern...
 

temi

Top Contributor
bei solchen antworten traut man sich nicht mal zu mehr zu fragen... tut mir leid dass ich erst im erst angefangen hab zu studiern...
Naja, eigentlich hat @JustNobody ja Recht. Die Methoden remove() und peekAt() sind einfacher, als die beiden bereits vorhandenen. Ein Blick in die Doku der ArrayList, die passenden Methoden raussuchen und aufrufen. Wobei du die passenden Methoden ja schon kanntest.

Aber nimm es nicht so ernst, so war es wohl auch nicht gemeint.
 
K

kneitzel

Gast
Ich sehe hier einfach nicht denn Sinn der Aufgabe. Ich kenne es so, dass eigene Datenstrukturen geschaffen werden... Aber hier geht es rein um die Verwendung einer vorhandene Klasse?

Das hat mich erst einmal extrem irritiert. Und dann sind die benötigten Methoden prinzipiell schon da. Daher mein Ernst gemeinter Ratschlag eben den vorhandenen Code noch einmal im Detail anzusehen ... wenn du verstehst, was der Code genau macht, dann sollte es einfach sein, die Methoden zu schreiben, die die Anforderung erfüllen.
 

MoxxiManagarm

Top Contributor
Also irgendwie ist das doch lachhaft. Du hast ja noch nicht mal eigene Strukturen sondern nutzt intern nur die ArrayList...
Ich sehe das ehrlich gesagt genauso. Der "Wrapper", genannt StackArray, scheint irgendwie sinnlos um ArrayList herum. Bist du dir sicher, dass du ArrayList als Container verwenden sollst und nicht etwa ein einfaches Array? Mit Arrays würde dir Aufgabe für mich viel mehr Sinn machen., weil man dann auch ein bissl Code schreiben müsste.
 

Neue Themen


Oben