Вот характерные отличия некоторых важных Map
реализаций:
LinkedHashMap
: "с предсказуемым порядком итерации [...], который обычно является порядком, в котором ключи были вставлены в карту ( порядок вставки )."
HashMap
: «не дает никаких гарантий относительно порядка карты»
TreeMap
: "сортируется в соответствии с естественным порядком ключей или по Comparator
"
Похоже, LinkedHashMap
- это то, что вам нужно в этом случае.
Вот фрагмент для иллюстрации различий; он также показывает общий способ итерации по всем элементам Map
и то, как использование интерфейса для ссылки на объекты обеспечивает большую гибкость выбора реализации.
import java.util.*;
public class MapExample {
public static void main(String[] args) {
populateThenDump(new HashMap<String,Integer>());
populateThenDump(new TreeMap<String,Integer>());
populateThenDump(new LinkedHashMap<String,Integer>());
}
static void populateThenDump(Map<String,Integer> map) {
System.out.println(map.getClass().getName());
map.put("Zero", 0);
map.put("One", 1);
map.put("Two", 2);
map.put("Three", 3);
map.put("Four", 4);
for (Map.Entry<String,Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " => " + entry.getValue());
}
}
}
Вывод приведенного выше фрагмента (, как видно на ideone.com ):
java.util.HashMap // unordered, results may vary
Three => 3
Zero => 0
One => 1
Four => 4
Two => 2
java.util.TreeMap // ordered by String keys lexicographically
Four => 4
One => 1
Three => 3
Two => 2
Zero => 0
java.util.LinkedHashMap // insertion order
Zero => 0
One => 1
Two => 2
Three => 3
Four => 4
Похожие вопросы
Похожие вопросы