Как речь заходит про Java-литературу - непременно обсуждение вокруг Эккеля-Шилдта-Хортсмана-Сьерра крутится. Есть из вариантов а-ля "полное руководство" ещё весьма недурственный Хабибуллин, кстати. Но я не об этом.
Если уже в наличии некоторый опыт, то предлагаю для вхождения в Java альтернативный вариант.
Седжвик Р. "Алгоритмы на Java". Книга о фундаментальных алгоритмах (сортировка-поиск-графы-строки). Погружение в Java происходит между делом, поскольку этот ЯП выбран в качестве иллюстрации примеров. О самом языке даются базовые сведения, но происходит это легко и непринуждённо, Java проходит ненавязчивым фоном в процессе изучения интереснейших тем. Автор - гуру computer science и блистательный университетский преподаватель.
Макконелл С. "Совершенный код". Мастер-класс о правильном стиле программирования. Львиная доля примеров - на Java (ну и к С++ ещё автор слабость питает).
После этих книг проще штудировать фундаментальные трактаты по Java. Язык теперь будет восприниматься как нечто естественное, а не чужеродное для Вашего разума.