List can have duplicate entries. The integer 10 is added twice to the list.

List is a ordered collection, meaning that each element is stored in a specific position. An element can be accessed using its location (also called as Index). The index always starts with 0.

List can also contain SObject records, here is a sample code. Note that removing/adding a record to the list does not add it to the database. You should explicitly use the DML commands insert/upsert/delete.

List<Account> listsample = [Select Id,Name from Account limit 5];
system.debug('The Account Name at index 0 is'+listsample[0].Name);
system.debug('The size of the list is'+listsample.size());
//Adding a element to the list
listsample.add(new Account(Name='testlistsample'));
system.debug('The size of the list now is'+listsample.size());
//Remove a element from the list
listsample.remove(5);
system.debug('The size of the list now is'+listsample.size());

SET:

A set is an unordered collection. Elements in a set are not stored in a specific order and you cannot access an element using an index.

A Map is a collection of Key Value pairs. Each key corresponds to an element. Below is a diagram which illustrates this.

A major difference between a Map and a List is traversal. In a List you will have to loop through each element to find out a specific element, whereas in a map you could fetch it directly using the key. This greatly reduces processing time.