Importjava.util.Arrays;Importjava.util.EmptyStackException; Public classArraystack<e> { protectedObject[] Elementdata;//Array protected intElementcount;//Number of elements protected intCapacityincrement;//Number of expansions Private Static Final LongSerialversionuid = 1224463164541339165L; PublicArraystack () {}/*** add Element *@paramItem *@return */ Publice push (E item) {intMincapacity = elementcount+1; if(Mincapacity-elementdata.length > 0){ //Expansion intOldcapacity =elementdata.length; intNewcapacity = Oldcapacity + ((capacityincrement > 0)?capacityincrement:oldcapacity); if(Newcapacity-mincapacity < 0) newcapacity=mincapacity; Elementdata=arrays.copyof (Elementdata, newcapacity); } Elementdata[elementcount++] =item; returnitem; } /*** Delete element *@return */ Public synchronizede pop () {e obj; intLen =size (); //get the element you want to deleteobj =Peek (); //do the delete operationElementdata[elementcount] =NULL; Elementcount--; returnobj; } Public synchronizedE Peek () {//determine that the stack is not empty intLen =size (); if(len = = 0) Throw Newemptystackexception (); intindex = len-1; //prevent array subscript from crossing if(Index >=Elementcount) { Throw NewArrayIndexOutOfBoundsException (index + ">=" +elementcount); } E obj; Obj=(E) Elementdata[index]; returnobj; } /*** length *@return */ Public synchronized intsize () {returnElementcount; }}
Stack--Array implementation