Depends what you mean by "dificult". Hard to understand? Hard to evaluate the output of the code? For me the hardest topics were not the one where the principles were hardest, but which contained many API details and
java code which I did not normally use and what was hard to remember. This was mostly Collections with all kind of collection classes I had never used before and which are so similar that its easy to mix them all up. Other topic I had problem with was Development as it was so boring to practice and i did not use it in real life (using Eclipse compiler or
Ant builder not command line tool). On the other hand, Threads was my favourite topic and almost the easiest for me as it did not contain many methods which names, arguments and thrown exception I would have to memorize.