I tried to group the topics where you can get an idea of different topics which are sort of related to one another:
-string methods
-term "immutable"
-literal strings
-equals method(when to use it?)
-comparable<T> interface
-autoboxing and autounboxing
-loop invariants
-Array Lists review (like how to find the indices of an object in an Array List)
-3 methods of List and ArrayList
-why arrays start from 0
-IndexOutOfBoundsException
-What is OBOB?
-mergesort
-sequential and binary search
-selection sort
-addresses
-aliasing
-aliasing error
-polymorphism
-overloaded methods
-what do they mean ("override a method")
-abstract classes
-Interfaces
-encapsulation
-information hiding
-modifier method (and why do you need to call it to change an object)
-review subclass's fields
-static methods
-boolean flags
-grids
-bugs, rocks, and flowers
-critters
-location
-Grid<E>
-Actor
-java.util.random
-run-time event
-system.out.printf
-run-time errors (called exceptions)
-checked exception
-unchecked exception means "not fixable?"
-throwing your own exceptions
-what is a compile time error
The best way of learning/studying is by application and practice. You can cover a lot of these topics with a few basic programming problems.
For example, if I told you to write a program which took in a list of Strings, sorted that list in ascending order, and then outputted the sorted list, that problem would include these topics:
-string methods
-literal strings
-equals method(when to use it?)
-comparable<T> interface
-loop invariants
-Array Lists review (like how to find the indices of an object in an Array List)
-why arrays start from 0
-IndexOutOfBoundsException
-What is OBOB?
-mergesort OR -selection sort
-what do they mean ("override a method")
-system.out.printf
-client class
I'm not saying that problem will let you master those topics, I'm just saying that those are the topics which would be included in that problem.