| |
| |
Preface | |
| |
| |
| |
Object-Oriented Programming and Class Hierarchies | |
| |
| |
| |
ADTs, Interfaces, and the Java API | |
| |
| |
| |
Introduction to Object-Oriented Programming | |
| |
| |
| |
Method Overriding, Method Overloading, and Polymorphism | |
| |
| |
| |
Abstract Classes | |
| |
| |
| |
Class Object and Casting | |
| |
| |
| |
A Java Inheritance Example The Exception Class Hierarchy | |
| |
| |
| |
Packages and Visibility | |
| |
| |
| |
A Shape Class Hierarchy | |
| |
| |
| |
Lists and the Collections Framework | |
| |
| |
| |
The List Interface and ArrayList Class | |
| |
| |
| |
Applications of ArrayList | |
| |
| |
| |
Implementation of an ArrayList Class | |
| |
| |
| |
Algorithm Efficiency and Big-O | |
| |
| |
| |
Single-Linked Lists | |
| |
| |
| |
Double-Linked Lists and Circular Lists | |
| |
| |
| |
The LinkedList Class and the Iterator, ListIterator, and Iterable Interfaces | |
| |
| |
| |
Implementation of a Double-Linked List Class | |
| |
| |
| |
Application of the LinkedList Class | |
| |
| |
| |
Testing | |
| |
| |
| |
The Collections Framework Design | |
| |
| |
| |
Stacks | |
| |
| |
| |
Stack Abstract Data Type | |
| |
| |
| |
Stack Applications | |
| |
| |
| |
Implementing a Stack | |
| |
| |
| |
Additional Stack Applications | |
| |
| |
| |
Queues | |
| |
| |
| |
Queue Abstract Data Type | |
| |
| |
| |
Maintaining a Queue of Customers | |
| |
| |
| |
Implementing the Queue Interface | |
| |
| |
| |
The Deque Interface | |
| |
| |
| |
Simulating Waiting Lines Using Queues | |
| |
| |
| |
Recursion | |
| |
| |
| |
Recursive Thinking | |
| |
| |
| |
Recursive Definitions of Mathematical Formulas | |
| |
| |
| |
Recursive Array Search | |
| |
| |
| |
Recursive Data Structures | |
| |
| |
| |
Problem Solving with Recursion | |
| |
| |
| |
Backtracking | |
| |
| |
| |
Trees | |
| |
| |
| |
Tree Terminology and Applications | |
| |
| |
| |
Tree Traversals | |
| |
| |
| |
Implementing a BinaryTree Class | |
| |
| |
| |
Binary Search Trees | |
| |
| |
| |
Heaps and Priority Queues | |
| |
| |
| |
Huffman Trees | |
| |
| |
| |
Sets and Maps | |
| |
| |
| |
Sets and the Set Interface | |
| |
| |
| |
Maps and the Map Interface | |
| |
| |
| |
Hash Tables | |
| |
| |
| |
Implementing the Hash Table | |
| |
| |
| |
Implementation Considerations for Maps and Sets | |
| |
| |
| |
Additional Applications of Maps | |
| |
| |
| |
Navigable Sets and Maps | |
| |
| |
| |
Sorting | |
| |
| |
| |
Using Java Sorting Methods | |
| |
| |
| |
Selection Sort | |
| |
| |
| |
Bubble Sort | |
| |
| |
| |
Insertion Sort | |
| |
| |
| |
Comparison of Quadratic Sorts | |
| |
| |
| |
Shell Sort: A Better Insertion Sort | |
| |
| |
| |
Merge Sort | |
| |
| |
| |
Heapsort | |
| |
| |
| |
Quicksort | |
| |
| |
| |
Testing the Sort Algorithms | |
| |
| |
| |
The Dutch National Flag Problem (Optional Topic) | |
| |
| |
| |
Self-Balancing Search Trees | |
| |
| |
| |
Tree Balance and Rotation | |
| |
| |
| |
AVL Trees | |
| |
| |
| |
Red-Black Trees | |
| |
| |
| |
2-3 Trees | |
| |
| |
| |
B-Trees and 2-3-4 Trees | |
| |
| |
| |
Skip-Lists | |
| |
| |
| |
Graphs | |
| |
| |
| |
Graph Terminology | |
| |
| |
| |
The Graph ADT and Edge Class | |
| |
| |
| |
Implementing the Graph ADT | |
| |
| |
| |
Traversals of Graphs | |
| |
| |
| |
Applications of Graph Traversals | |
| |
| |
| |
Algorithms Using Weighted Graphs | |
| |
| |
| |
Introduction to Java | |
| |
| |
| |
The Java Environment and Classes | |
| |
| |
| |
Primitive Data Types and Reference Variables | |
| |
| |
| |
Java Control Statements | |
| |
| |
| |
Methods and Class Math | |
| |
| |
| |
The String, StringBuilder, and StringBuffer Classes | |
| |
| |
| |
Wrapper Classes for Primitive Types | |
| |
| |
| |
Defining Your Own Classes | |
| |
| |
| |
Arrays | |
| |
| |
| |
Input/Output Using Class JOptionPane | |
| |
| |
| |
Input/Output Using Streams and the Scanner Class | |
| |
| |
| |
Catching Exceptions | |
| |
| |
| |
Throwing Exceptions | |
| |
| |
| |
Overview of UML | |
| |
| |
| |
The Class Diagram | |
| |
| |
| |
Sequence Diagrams | |
| |
| |
| |
Event-Oriented Programming | |
| |
| |
| |
Elements of an Event-Oriented Application | |
| |
| |
| |
Overview of the AWT and Swing Hierarchy | |
| |
| |
| |
Layout Managers | |
| |
| |
| |
Components for Data Entry | |
| |
| |
| |
Using Data Entry Components in a GUI | |
| |
| |
| |
Menus and Toolbars | |
| |
| |
| |
Processing Mouse Events | |
| |
| |
| |
Testing and Debugging | |
| |
| |
| |
Testing Using the JUnit Framework | |
| |
| |
| |
Debugging a Program | |
| |
| |
| |
Visualizing Data Structures | |
| |
| |
Glossary | |
| |
| |
Index | |