import java.util.*; public class Stack<E extends Number> { private ArrayList<E> list; public Stack(ArrayList<E> list) { this.list=list; } public void push(E element) { list.add(element); } public E pop() { E v=list.get(list.size()-1); list.remove(v); return v; } public int size () { return list.size(); } public double average() { int length=this.size(); double sum=0.0; while(!list.isEmpty()) sum+=this.pop().doubleValue(); return sum/length; } public boolean CompareAverage(Stack<?> s) { if(this.average()==s.average()) return true; return false; } public static void main(String[] args) { Stack<Integer> s1=new Stack(new ArrayList<Integer>()); s1.push(1); s1.push(2); s1.push(3); s1.push(4); s1.push(5); System.out.println("Integers Average of s1 is "+s1.average()); Stack<Double> s2=new Stack(new ArrayList<Double>()); s2.push(1.0); s2.push(2.0); s2.push(3.0); s2.push(4.0); s2.push(5.0); System.out.println("Doubles Average of s1 is "+s2.average()); System.out.println("same avg?"+s1.CompareAverage(s2)); } }