What are the differences between arrays, strings, hash maps, and linked lists, and when would you use each?