You already know a lot about primitive types, and in this level you got acquainted with their doppelgangers — the wrapper classes, and learned what autoboxing and unboxing are, how to compare wrapper types correctly, and how to do it incorrectly.
You also took your array experience to the next level by getting to know the ArrayList class. Basically, you've got stuff to think about! Better yet, set aside half an hour for a few additional articles on these topics that will put everything in its place.
The wrapper classes look and behave like the primitive type of the same name, but they are in fact real classes. This article expounds on who needs them, what they are for, and what you do with them.
In Java, a feature of primitives and their wrappers is autoboxing / unboxing. Let's dig into this concept.
Arrays are great, but programmers get into a bad mood due to their limited size and the inability to add or remove new elements. So, meet ArrayList: it's a souped-up array, a simple and convenient data structure. Once you have moved from arrays to ArrayList, you just can't go back.
And here is another article that continues our discussion of ArrayList. This time we will dwell in more detail on important operations for working with lists — removing an item from a list, and removing an item from a list in a loop.
If you don't fully understand how ArrayList works, this lesson is for you. There will be a lot of pictures and explanations and almost no code. But most importantly, after reading and understanding it, you will understand very well how ArrayList works... Who knows, maybe you'll even implement your own after that! So, to advance your training, this is a good task for a beginning developer.