Why not use a map and use the player's id as the key?
Surely the idea is to take player movements and notify all *other* players so they can update their local world state? In which case a loop is the only thing to do and the exact kind of list probably doesn't make too much difference.
To temu, how big is the world, and how many players are you hoping to connect? To start with I'd just do what you posted originally, and if you start getting hundreds of users then that's a nice problem to have
At that point one way it might be adapted to improve performance is divide the world into sub-areas and when player movements come in, only notify other players in their sub-area, and also probably adjacent sub-areas. When a player moves between areas, shift their "Player" record to the list for the new subarea. In that kind of scheme it could make sense to have movements in each area monitored by a separate thread, effectively treating each area as a separate small world. Potentially more scalable that way too as you might eventually run each area on a different machine entirely.