I find it very hard selecting the right collection. Has someone written a small list of rules/guidelines?
Bruce Eckel has a rather good Java book IMO freely available online. Check out Thinking in Java
. Here is a quote from appendix B that's most relavant to your question:
Use the containers in the standard Java library. Become proficient with their use and you'll greatly increase your productivity. Prefer ArrayList for sequences, HashSet for sets, HashMap for associative arrays, and LinkedList for stacks (rather than Stack, although you may want to create an adapter to give a stack interface) and queues (which may also warrant an adapter, as shown in this book). When you use the first three, you should upcast to List, Set, and Map, respectively, so that you can easily change to a different implementation if necessary.