Главная » Processing » Работа с HashMap в Processing

0

HashMap похожи на массивы, но для доступа к элементам используют другие методы. Массивы используют целые числа в качестве индекса, в то время как HashMap используют String. HashMap удобны, когда вам нужно найти определенный элемент в огромном комплексе данных.

Как это делается

Начнем с объявления объекта класса HashMap и добавления к нему значений в функции

setup().

HashMap<String, Float> hm;

void setup()

{

hm = new HashMap<String, Float>(); hm.put("Processing", 51.30);

hm.put("openFrameworks", 30.45);

hm.put("Cinder", 12.78);

noLoop();

}

Первое, что мы сделаем в функции draw() так это переберем объект класса HashMap с помощью итератора и выведем каждый элемент на консоль.

Iterator i = hm.entrySet().iterator(); while ( i.hasNext () ) {

Map.Entry me = (Map.Entry)i.next();

println( "Key: " + me.getKey() + ", Value: " + me.getValue() );

}

println("—");

Если требуется проверить, не пустой ли объект HashMap, сделайте это методом

isEmpty(). Получить доступ к элементу HashMap можно методом get().

println( "Is Empty? " + hm.isEmpty() );

println( "Get ‘Processing': " + hm.get("Processing") );

Для получения количества элементов в HashMap используйте метод size(). Он работает так же, как в ArrayList. Удалить элементы в HashMap можно с помощью метода remove().

println( "Number of Elements (before remove): " + hm.size() ); println( "Removed: " + hm.remove("openFrameworks") ); println( "Number of Elements (after remove): " + hm.size() );

Последнее, что мы сделаем – поищем в HashMap пункт с ключевой фразой с помощью метода containsKey().

println( "Contains key ‘openFrameworks': " + hm.containsKey("openFram eworks") );

Когда вы запустите пример, вы увидите на консоли следующие данные:

Key: Cinder, Value: 12.78 Key: Processing, Value: 51.3

Key: openFrameworks, Value: 30.45

Is Empty? false

Get ‘Processing': 51.3

Number of Elements (before remove): 3 Removed: 30.45

Number of Elements (after remove): 2 Contains key ‘openFrameworks': false

Как это работает

Сналача мы объявили объект класса HashMap и инициализировали его с помощью конструктора класса. Хорошей идеей будет добавить тип данных, которые вы будете там сохранять. Обратите внимание, что в HashMap вы можете хранить только объекты и строки. Он не работает для переменных типа float или int. Для хранения целых или вещественных чисел в HashMap можно использовать классы Integer или Float из Java. Класс Integer включает в объект переменные типа int; класс Float делает то же самое для переменных float.

Hashmap<String, Float> hm;

hm = new HashMap<String, Float>();

Добавить элементы можно с помощью метода put(). Первый параметр это ключ, и преочтительно должен быть String, чтобы вы могли с легкостью найти его. Второй параметр – это любой объект. В нашем примере мы использовали объекты типа Float. Для удаления объекта можно воспользоваться методом remove(). Единственный параметр, который вам нужен для этого метода это ключ раздела, который вы хотите удалить.

Для проверки HashMap на наличие элементов используйте метод isEmpty(). Этот метод возвращает true если HashMap пуст и false если он содержит разделы. Если требуется проверить, содержит ли HashMap раздел с определенным ключом, воспользуйтесь модом containsKey(). Параметр этой функции это, собственно, ключ, который вы ищете. Этот метод тоже возвражает логическую переменную.

Перебрать все объекты в HashMap можно с помощью итератора. Это аналогично работе с ArrayList. Итератор вызывается так: hm.entrySet().iterator(). Получить доступ к определенному разделу с помощью цикла while можно так: Map.Entry me = (Map.

Entry) itr.next(). Для получения доступа к ключу или величине из определенного раздела, примените методы getKey() и getValue().

Источник: Ян Вантомм, Processing 2: креативное программирование, перевод с английского Александры Мишутиной, Published by Packt Publishing Ltd., 2012, BIRMINGHAM – MUMBAI.

По теме:

  • Комментарии