package org.projectusus.metrics; import java.util.ArrayList; import java.util.List; import java.util.Stack; public class ListStack<T> { private Stack<List<T>> counts = new Stack<List<T>>(); public void startNewList() { counts.push( new ArrayList<T>() ); } public void startNewList( T startValue ) { List<T> list = new ArrayList<T>(); list.add( startValue ); counts.push( list ); } public void startNewList( List<T> startList ) { counts.push( startList ); } public List<T> getAndClearList() { if( counts.size() == 0 ) { return new ArrayList<T>(); } return counts.pop(); } public void appendLastListWith( T element ) { List<T> newList = getAndClearList(); newList.add( element ); startNewList( newList ); } }