Класс LinkedHashMap
Класс LinkedHashMap расширяет HashMap и поддерживает связанный список записей на Map в том порядке, в котором они были вставлены. Это позволяет итерации ввода-вывода по Map. То есть при итерировании LinkedHashMap элементы будут возвращены в том порядке, в котором они были вставлены.
Вы также можете создать LinkedHashMap, который возвращает свои элементы в том порядке, в котором они были в последний раз.
Конструкторы
Ниже приведен список конструкторов, поддерживаемых классом LinkedHashMap.
№ Конструктор и описание
1 LinkedHashMap( )
Этот конструктор создает стандартную ссылку LinkedHashMap.
2 LinkedHashMap(Map m)
Этот конструктор инициализирует LinkedHashMap с элементами из данного класса Map m.
3 LinkedHashMap(int capacity)
Этот конструктор инициализирует LinkedHashMap с заданной емкостью.
4 LinkedHashMap(int capacity, float fillRatio)
Этот конструктор инициализирует как емкость, так и коэффициент заполнения. Значение емкости и коэффициент заполнения такие же, как для HashMap.
5 LinkedHashMap(int capacity, float fillRatio, boolean Order)
Этот конструктор позволяет указать, будут ли элементы храниться в связанном списке по порядку вставки или по порядку последнего доступа. Если Order = true, используется порядок доступа. Если Order = false, используется порядок вставки.
Методы
Помимо методов, унаследованных от его родительских классов, LinkedHashMap определяет следующие методы:
№ Методы и описание
1 void clear()
Удаляет все отображения из этого Map.
2 boolean containsKey(Object key)
Возвращает true, если этот Map отображает один и более ключей в указанное значение.
3 Object get(Object key)
Возвращает значение, на которое эта карта отображает указанный ключ.
4 protected boolean removeEldestEntry(Map.Entry eldest)
Возвращает true, если эта карта должна удалить свою старшую запись.
Пример
Следующая программа демонстрирует работу нескольких методов, поддерживаемых коллекцией LinkedHashMap в Java:
import java.util.*;
public class LinkedHashMapDemo {
public static void main(String args[]) {
// Создаём хэш-карту
LinkedHashMap lhm = new LinkedHashMap();
// Помещаем элементы в карту
lhm.put("Зарина", new Double(3434.34));
lhm.put("Марк", new Double(123.22));
lhm.put("Андрей", new Double(1378.00));
lhm.put("Денис", new Double(99.22));
lhm.put("Михаил", new Double(-19.08));
// Получаем вид элементов
Set set = lhm.entrySet();
// Получаем итератор
Iterator i = set.iterator();
// Отображаем элементы
while(i.hasNext()) {
Map.Entry me = (Map.Entry)i.next();
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
}
System.out.println();
// Вносим 1000 на счёт Зарины
double balance = ((Double)lhm.get("Зарина")).doubleValue();
lhm.put("Зарина", new Double(balance + 1000));
System.out.println("Новый баланс Зарины: " + lhm.get("Зарина"));
}
}
Получим следующий результат:
Зарина: 3434.34
Марк: 123.22
Андрей: 1378.0
Денис: 99.22
Михаил: -19.08
Новый баланс Зарины: 4434.34