Design Patterns in Java
Steve Metsker and I have co-written Design Patterns in Java, available from Addison-Wesley. This is a workbook-style book, updating Steve's earlier Design Patterns Java Workbook and Design Patterns in C#. It covers the same 23 patterns as Design Patterns, but adds some different perspective and a number of challenges to help you make sure you understand the patterns.
It's targeted to intermediate programmers, though more advanced programmers who want to brush up on patterns might consider it also.