Вообще говоря, карта-это структура данных, состоящая из пар клавишных значений, и каждый ключ уникален в наборе. Давайте использовать K и V для представления ключей и значений, чтобы проиллюстрировать девять основных вопросов о карте на Java.
0. Преобразовать карту в список типа
В Java интерфейс MAP предоставляет три способа получения коллекций: набор ключей, набор значений и набор клавиш. Все они могут быть преобразованы в тип списка с помощью конструктора или метода addall (). Следующий код показывает, как построить ArrayList с карты:
// Список ключей keylist = new ArrayList (map.keyset ()); // Список значений valuelist = new ArrayList (map.valueSet ()); // key-value listlist listlist = new ArrayList (map.EntrySet ());
1. Переверните карту через запись
Таким образом, в Java существует, поскольку пары ключевых значений называется Map.Entry. Map.EntrySet () возвращает коллекцию ключей, что является очень эффективным способом пройти.
for (запись в записи: map.EntrySet ()) {// get keyk key = intry.getKey (); // get valuev = intry.getValue ();} Итератор также часто используется, особенно перед JDK1.5
Iterator itr = map.entryset (). Iterator (); while (itr.hasnext ()) {intpirt intry = itr.next (); // get keyk key = internation.getkey (); // get valuev = intervalue ();} 2. Сортировать карту по ключу
Сортировка требует частых операций на KE Map. Один из способов - реализовать его через компаратор:
Список списка = new ArrayList (map.EntrySet ()); collections.sort (list, new Comporator () {@OverridePublic int compare (intry e1, inpit e2) {return e1.getkey (). Compareto (e2.getKey ());}}); Другим методом является использование SortedMap, но сопоставимый интерфейс должен быть реализован.
SortedMap sortedMap = new TreeMap (new Comparator () {@OverridePublic int compare (k k1, k k2) {return k1.compareto (k2);}}); sortedmap.putall (map);3. Сортировать карту со значением <br /> Это несколько похоже на предыдущий пункт, код заключается в следующем:
Список списка = new ArrayList (map.EntrySet ()); collections.sort (list, new Comporator () {@OverridePublic int compare (intry e1, intry e2) {return e1.getValue (). CompareTo (e2.getValue ());}});4. Инициализируйте статическую постоянную карту
Если вы хотите создать глобальную статическую карту, у нас есть два способа, и она безопасна.
В Test1, хотя мы заявляем, что карта статическая, мы все равно можем изменить его значение при инициализации, точно так же, как Test1.map.Put (3, «Three»);
В Test2 мы устанавливаем его не модифицированным через внутренний класс, поэтому, когда мы запускаем test2.map.put (3, «три»), он бросит
UnsupportedOperationException исключение запрещает вам модифицировать. public class test1 {private static final Map Map; static {map = new hashmap (); map.put (1, "one"); map.put (2, "two");}} public class test2 {private Static final Map; Static {map amap = new Hashmap (); amap.put (1, "one"); Collections.unmodifiablemap (amap);}} 5. Разница между Hashmap, TreeMap и Hashtable
В интерфейсе карты есть три реализации: Hashmap, TreeMap и Hashtable.
Они разные. Для получения подробной информации, пожалуйста, обратитесь к статье «Hashmap vs. TreeMap против Hashtable vs. LinkedHashmap».
6. обратный запрос на карте
После того, как мы добавим пару клавишных значений в карту, это означает, что на карте ключ и значение соответствуют одному, а клавиша соответствует значению. Но иногда нам нужно обратить вспять запрос, например, поиск его ключа через определенное значение. Эта структура данных называется бидоидальной картой. К сожалению, JDK не поддерживает его.
Apache и Guava совместно предоставляют эту двунаправленную реализацию карты, в которой она предусматривает, что как клавиши, так и значения должны быть 1: 1.
7. Копирование карты
Java предоставляет много методов, которые могут реализовать репликацию карты, но эти методы не могут быть синхронизированы в любое время. Проще говоря, это изменение, которое происходит на карте, и скопированный остается прежним. Вот относительно эффективный метод реализации:
Карта copiedmap = collections.synchronizedmap (map);
Конечно, есть еще один метод, который является клонированием. Но наш оригинатор Java Джош Блох не рекомендует этот метод. Однажды он сказал в интервью о клонировании карты: методы клонирования предоставляются во многих классах, потому что люди нуждаются в них. Тем не менее, клонирование очень ограничено и часто вызывает ненужное воздействие. (Исходный текст "Конструктор копии против клонирования")
8. Создайте пустую карту
Если эта карта установлена на недоступную, она может быть реализована следующим образом
map = collections.emptymap ();
Напротив, когда мы можем его использовать, мы можем
map = new HashMap ();
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.