Списки представляють послідовне впорядкування елементів. Карти використовуються для представлення колекції пар ключ / значення.
Незважаючи на те, що ви можете використовувати карту як список, у цього є певні мінуси.
Підтримання порядку:
- Список за визначенням упорядкований. Ви додаєте елементи, після чого можете переглядати список у тому порядку, в якому ви вставляли елементи. Коли ви додаєте елементи до HashMap, ви не гарантуєте отримання елементів у тому самому порядку, в якому ви їх розмістили. Існують підкласи HashMap, такі як LinkedHashMap, які підтримуватимуть порядок, але загалом порядок не гарантується з картою.
Семантика ключ / значення:
- Призначення карти - зберігати елементи на основі ключа, який можна використовувати для отримання елемента пізніше. Подібної функціональності можна досягти лише за допомогою списку в обмеженому випадку, коли ключовим випадком є позиція у списку.
Читаність коду
Розглянемо наступні приклади.
list.add(myObject);
map.put(myKey, myObject);
map.put("1", myObject);
for (Object o : myList)
for (Object o : myMap.values())
Функціональність колекції
Деякі чудові функції утиліти доступні для списків за допомогою класу Collections. Наприклад ...
Collections.shuffle(myList);
Collections.sort(myList, myComparator);
Сподіваюся, це допомагає,
Lists
іMaps
це дві абсолютно різні структури даних, з різними операціями та інваріантами. Чи можете ви пояснити контекст / вимоги, про які ви думаєте, де обидва варіанти будуть прийнятними рішеннями?