This is a collection of various courses, tutorials and guides I’ve found helpful.

Link Description
Head first Java An excellent book if you're looking for a fun and engaging way of learning Java.
Head first Design patterns A great book that teaches you how to structure your code to be maintainable, readable and clean. A must read if you want to become a better software developer.
Courses and videos
Link Description
Java at A fun way of learning with the help of an interactive tool. Great for beginners, not that good for more experienced programmers.
Course CS106A at Stanford Free video lecture from Stanford about computer programming with emphasis on Java. This is how I started learning Java.
CleanCoders This is bit more advanced but it shows you good universal coding practices.
Assignments and project ideas
Link Description
Programming by doing More than 200 assignments to help you learn Java. From basic tutorials to more advanced topics.
LeetCode OJ LeetCode hosts a lot of different coding problems that range from the very simple to the very hard.