Data Structures and the Java Collections Framework, Third Edition
January 2011, ©2011
This updated third edition features an increased emphasis on testing. The unit testing features of JUnit4 with the test-first model are introduced early, in chapter 2, and integrated in applications throughout the remaining chapters. In addition, there is ample opportunity for hands-on practice, including 23 lab experiments, hundreds of programming exercises and more than 30 programming projects.
CHAPTER 0 Introduction to Java.
0.1 Java Fundamentals
0.4 Arguments and Parameters.
0.5 Output Formatting.
CHAPTER 1 Object-Oriented Concepts.
1.1 Data Abstraction.
1.2 Abstract Methods and Interfaces.
1.4 Information Hiding.
1.6 The Unified Modeling Language.
CHAPTER 2 Additional Features of Programming and Java.
2.1 Static Variables, Constants and Methods.
2.2 Method Testing.
2.3 Exception Handling.
2.4 File Output.
2.5 System Testing.
2.6 The Java Virtual Machine.
2.8 Overriding the Object Class's equals Method.
CHAPTER 3 Analysis of Algorithms.
3.1 Estimating the Efficiency of Methods.
3.2 Run-Time Analysis.
CHAPTER 4 The Java Collections Framework.
4.2 Some Details of the Java Collections.
CHAPTER 5 Recursion.
5.3 Decimal to Binary.
5.4 Towers of Hanoi.
5.5 Searching an Array.
5.7 Indirect Recursion.
5.8 The Cost of Recursion.
CHAPTER 6 Array-Based Lists.
6.1 The List Interface.
6.2 The ArrayList Class.
6.3 Application: High-Precision Arithmetic.
CHAPTER 7 Linked Lists.
7.1 What is a Linked List?
7.2 The SinglyLinkedList Class—A.
7.3 Doubly-Linked Lists.
7.4 Application: A Line Editor.
CHAPTER 8 Stacks and Queues.
CHAPTER 9 Binary Trees.
9.1 Definition of Binary Tree.
9.2 Properties of Binary Trees.
9.3 The Binary Tree Theorem.
9.4 External Path Length.
9.5 Traversals of a Binary Tree.
CHAPTER 10 Binary Search Trees.
10.1 Binary Search Trees.
10.2 Balanced Binary Search Trees.
CHAPTER 11 Sorting.
11.2 Simple Sorts.
11.3 The Comparator Interface.
11.4 How Fast Can we Sort?
11.5 Radix Sort.
CHAPTER 12 Tree Maps and Tree Sets.
12.1 Red-Black Trees.
12.2 The Map Interface.
12.3 The TreeMap Implementation of the SortedMap Interface.
12.4 Application of the TreeMap Class: a Simple Thesaurus.
12.5 The TreeSet Class.
CHAPTER 13 Priority Queues.
13.2 The PriorityQueue Class.
13.3 Implementation Details of the PriorityQueue Class.
13.4 The heapSort Method.
13.5 Application: Huffman Codes.
CHAPTER 14 Hashing.
14.1 A Framework to Analyze Searching.
14.2 Review of Searching.
14.3 The HashMap Implementation of the Map Interface.
14.4 The HashSet Class.
14.5 Open-Address Hashing (optional).
CHAPTER 15 Graphs, Trees, and Networks.
15.1 Undirected Graphs.
15.2 Directed Graphs.
15.5 Graph Algorithms.
15.6 A Network Class.
15.7 Backtracking Through A Network.
APPENDIX 1 Additional Features of the Java Collections Framework.
APPENDIX 2 Mathematical Background.
APPENDIX 3 Choosing a Data Structure.
- There is an increased emphasis on testing. In particular, the unit-testing features of JUnit 4 are introduced in Chapter 2 and integrated in applications throughout the remaining chapters.
- The Scanner class has replaced the BufferedReader and StringTokenizer classes. The Scanner class s versatility supports pattern matching as well as keyboard input and file input.
- Utilizes the Java Collections Framework, part of the java.util package, as a platform to develop higher-level applications.
- Where necessary, the author includes approaches that differ from those in the Framework including a separate section on open addressing, and a discussion of the trade-offs of one design over the other.
- Students have the opportunity to develop their own data structures via programming projects in which data structures are either created “from the ground up” or extended from examples in the chapters.
- 23 Web Labs promote active learning and provide reinforcement of the text material. The labs encourage the use the scientific method, and each lab is set up as an experiment.
- A “theme” project is introduced in chapter 2 and continues through six of the remaining chapters. This project clearly illustrates the practical value of understanding data structures.