I need to be able to create an array that stores the userid of all users in a room with the current x, y, z position that they are in. I assume I will need to use ArrayList, but I'm not sure how to go about setting it up so that this will work like I'm thinking.
The big difference is with generics (like List<>) you can specify the data type that it holds and it will enforce that. It can save you from making stupid mistakes and speeds up processing because it always knows what its working with.
ArrayLists always hold the "Object" data-type. Fortunately, everything derives from that type, so you're always set. You can just add anything to an ArrayList. Of course, then you suffer from "boxing" and "un-boxing" slowdowns, which is just a fancy way of saying the slowdown that happens when your data is converted to a generic "Object" when its added, then back to the actual data type (in this case Vector3) when you need it.