preface make the examples as clear as possible while maintaining the advantages of java java is used here strictly as tool to illustrate data structures concepts in particulari make use of java' support for hiding implementation detailsincluding features such as classesprivate class membersand interfaces these features of the language support the crucial concept of separating logical designas embodied in the abstract data typefrom physical implementation as embodied in the data structure as with any programming languagejava has both advantages and disadvantages java is small language there usually is only one language feature to do somethingand this has the happy tendency of encouraging programmer toward clarity when used correctly in this respectit is superior to or +java serves nicely for defining and using most traditional data structures such as lists and trees on the other handjava is quite poor when used to do file processingbeing both cumbersome and inefficient it is also poor language when fine control of memory is required as an exampleapplications requiring memory managementsuch as those discussed in section are difficult to write in java since wish to stick to single language throughout the textlike any programmer must take the bad along with the good the most important issue is to get the ideas acrosswhether or not those ideas are natural to particular language of discourse most programmers will use variety of programming languages throughout their careerand the concepts described in this book should prove useful in variety of circumstances inheritancea key feature of object-oriented programmingis used sparingly in the code examples inheritance is an important tool that helps programmers avoid duplicationand thus minimize bugs from pedagogical standpointhoweverinheritance often makes code examples harder to understand since it tends to spread the description for one logical unit among several classes thusmy class definitions only use inheritance where inheritance is explicitly relevant to the point illustrated ( section this does not mean that programmer should do likewise avoiding code duplication and minimizing errors are important goals treat the programming examples as illustrations of data structure principlesbut do not copy them directly into your own programs one painful decision had to make was whether to use generics in the code examples in the first edition of this bookthe decision was to leave generics out as it was felt that their syntax obscures the meaning of the code for those not familiar with java in the years followingthe use of java in computer science curricula greatly expandedand now believe that readers of the text are likely to already be familiar with generic syntax thusgenerics are now used extensively throughout the code examples