Java software structures designing and using data structures - Lewis, John (Addison-Wesley, 2010)