In: Computer Science
I was trying to implement a stack for my assignment. One of the
method given is this: public T[] toArray(); I need help to
implement this method. The class is a generic class. I am using
ArrayList to implement my stack. ArrayList<T> stack is the
data structure. I want to convert everything in the ArrayList to an
array.
I am implementing the public T[] toArray() interface
given to me, so I can not use the JDK toArray method.
Here is the complete implementation of the Stack.java generic class using ArrayList<T> also implemented the toArray() method that returns the T[] type, also demonstrated below writing a driver method.
Let me know for any questions.
=============================================================================
import java.util.ArrayList;
import java.util.Random;
public class Stack<T> {
private ArrayList<T> elements;
public Stack() {
elements = new ArrayList<T>();
}
public T[] toArray() {
T[] array = (T[]) new Object[elements.size()];
for (int i = 0; i < elements.size(); i++) {
array[i] = elements.get(i);
}
return array;
}
public void push(T element) {
elements.add(element);
}
public T pop() {
if (elements.size() == 0) return null;
T element = elements.get(elements.size() - 1);
elements.remove(elements.size() - 1);
return element;
}
public boolean isEmpty() {
return elements.size() == 0;
}
public T peek(){
if (elements.size() == 0) return null;
T element = elements.get(elements.size() - 1);
return element;
}
public static void main(String[] args) {
Stack<Integer> numbers = new Stack<Integer>();
Random random = new Random();
for(int i=1;i<=5;i++)numbers.push(random.nextInt(10)+1);
System.out.println("Convert elements to array");
Object[] array = numbers.toArray();
for(Object num:array) System.out.println(num);
System.out.println("Pop out the elements");
while (!numbers.isEmpty()) System.out.println(numbers.pop());
}
}