Java Structures
 
Data Structures in Java, for the Principled Programmer
Java Structures is a free textbook developed to help faculty teach Data Structures (sometimes called CS2).  Java Structures was once published by McGraw-Hill, but they have kindly allowed further development of this text as a free product.  Java Structures is now in its third edition (almost*), after nearly a decade of continuous use at Williams.  Instructors and students may download the current PDF version of the text and read it on-line, or print it locally.  My intent is to make a good textbook available at the lowest cost.
 
Java Structures develops a small package of container classes (the structure package), from the ground up, and in a principled manner.  Over the years, many of the data structures developed in this package, have appeared in Sun’s Java development kits.  Indeed, you will find that many of the structures that appear in this text have interfaces that are very similar to those found in Sun’s implementation.  Java Structures is free for instructors and students to work and rework.  It always has been free, and always will be free.
 
While the current version of the software makes use of generics (or parameterized types), parameterized and unparameterized versions are accessible through a single JAR file.  The text makes use of the unparameterized version for the initial few chapters, and then introduces parameterized types.
 
You can always find the latest version at http://www.cs.williams.edu/~bailey/JavaStructures.