У меня небольшие проблемы при попытке написать метод, который, по сути, вставляет в стек динамической c. Я не совсем уверен, как это написать, поэтому мне было интересно, есть ли у кого-нибудь указатели или советы о том, как двигаться дальше с этим.
Вот часть класса
public class StackOfVersionedObjects {
private Node<VersionedObject> latest;
private String key;
public StackOfVersionedObjects(String key, final Object object) {
this.key = key;
VersionedObject vrObject = new VersionedObject(object);
latest = new Node<VersionedObject>(vrObject);
}
public boolean isEmpty() {
return latest == null;
}
// TODO: create a new version of the given object by pushing it to the top of the stack;
// the new versioned object should have the version of the latest object plus one;
// if the stack is empty, this method should throw an EmptyStackException
public void put(final Object object) throws EmptyStackException {
if (isEmpty())
throw new EmptyStackException();
Object tempObj = new Node();
Node tempNode = new Node();
latest.getNext(tempNode);
latest.setNext(temp); // I think??
// NO THIS DOESN'T WORK
} ...}
Вот мой объект и класс узла, если это необходимо
Класс объекта:
public class VersionedObject {
private Object object;
private int version;
private static final int FIRST_VERSION = 0;
public VersionedObject(final Object object, int version) {
this.object = object;
if (version < FIRST_VERSION)
this.version = FIRST_VERSION;
else
this.version = version;
}
public VersionedObject(final Object value) {
this(value, FIRST_VERSION);
}
public Object getObject() {
return object;
}
public int getVersion() {
return version;
}
@Override
public String toString() {
return "VersionedObject{" +
"object=" + object +
", version=" + version +
'}';
}
}
Класс узла:
public class Node<T> {
private T data;
private Node next;
public Node() {
data = null;
next = null;
}
public Node(T data) {
this.data = data;
next = null;
}
public T getData() {
return data;
}
public Node<T> getNext() {
return next;
}
public void setData(T data) {
this.data = data;
}
public void setNext(Node<T> next) {
this.next = next;
}
@Override
public String toString() {
return data.toString();
}
}