I think what's next to try and apply your knowledge of Java and do some programming. Come up with something you think would be useful (or fun) and then try to create it. Also, you can never get enough algorithms

These are fairly universal regardless of what language you use. Another good idea would be to learn about parallel programming and multi-threading. Also, you'll find that once you learn the basic CS topics and programming paradigms you can quickly pick up any language within a few weeks (you probably won't be an expert in that language, but that's ok).

Good algorithms/data structures/Concepts to learn about (this is by no means a complete set, just what I could come up with off the top of my head):

Heaps

Hash Tables/Dictionaries

Queues/Stacks

Linked lists (singularly linked and doubly linked)

Balanced binary trees (several methods)

Spatial data structures (Quad trees/Oct trees, KD trees, hierarchical grids and bounding volume hierarchies)

Set theory (at least the basics). Other math (particularly vector/matrix math) would also be very useful

Discrete mathematics

Event driven programming model

Reflection

Functional programming paradigm (you'll have to use a language other than Java)

Regular expressions and parsing algorithms/tools

Parallel programming (multi-threading, multiple processes, mutex's/locks, thread pooling)

dynamic programming

Algorithm analysis ("Big-O" notation and other analysis)

Root finding algorithms (bisection method, newton's method, secant method)

Numerical derivatives/integration algorithms

Linear algebra (solving simultaneous equations is a very good topic)

Monte Carlo methods and other stochastic methods

Graph/Map theory

Path finding algorithms (Dijkstra's algorithm, A*)

Computer learning and AI

Language wise, I would recommend learning C# and then C++. C# is very similar to Java, but it's also a bit closer (syntactically and semantically) to C++. I would recommend C++ over C because it has a good base in OO where-as C is mostly functional/procedural programming (useful for micro-controller programming, though some micro-controllers use C++). Python and/or matlab are also good languages (matlab if you're planning on doing scientific/engineering computations), but they're quite different than the above listed languages. You could also dabble with various web oriented technologies (HTML/CSS, JSP, Javascript, PHP, JavaEE which is basically Java). There are also hundreds of other languages you could learn.

What path you take really depends on what you want to end up doing with your programming knowledge.