It's not necessarily focused on Java, but if you want to challenge your computer science, problem solving, and math skills, you can take a look at Project Euler
Games are always fun to make, too. There are thousands of games out there, pick some that you really like (maybe start out simple and work your way up) and try to make them in Java.
Trying to help people with their code here is another good method for learning more about Java (::shameless plug:
. Debugging is a valuable skill to learn, especially if you're debugging someone else's code.