queue implementation using generics in java