HashMap<K,V>

Реализация: Iterable<Entry<K,V>>, Map<K,V>

Реализация хеш-таблицы интерфейса Map .

Реализует связи 1 к 1 по ключу типа К к элементам типа V. Отображение делается по хэшу для каждого ключа, что может быть настроено через передачу указателей на функции хэширования и проверку равенства ключей.

Вы можете передать собственную функцию хэширования и проверки равентсва конструктору, например:

var map = new Gee.HashMap<Foo, Object>(foo_hash, foo_equal);

Для строк и целых чисел хэш и функции проверки равенства подставляются автоматически, объекты различаются по их ссылкам по умолчанию. Вы должны передавать пользовательские функции хэширования и проверки равенства если хотите изменить стандартное поведение.

Когда использовать

Эта реализация лучше подходит для сильно разнородных ключевых значений. В случае избыточности хеш-ключей или большого объема данных предпочтение отдается использованию дерева, например TreeMap .

Map Example

Maps work like a dictionary. They store key - value pairs.

using Gee;

void main () {

    var map = new HashMap<string, int> ();

    // Setting values
    map.set ("one", 1);
    map.set ("two", 2);
    map.set ("three", 3);
    map["four"] = 4;            // same as map.set ("four", 4)
    map["five"] = 5;

    // Getting values
    int a = map.get ("four");
    int b = map["four"];        // same as map.get ("four")
    assert (a == b);

    // Iteration

    stdout.printf ("Итерация по значениям\n");
    foreach (var entry in map.entries) {
        stdout.printf ("%s => %d\n", entry.key, entry.value);
    }

    stdout.printf ("Итерация только по ключам\n");
    foreach (string key in map.keys) {
        stdout.printf ("%s\n", key);
    }

    stdout.printf ("Итерация только по значениям\n");
    foreach (int value in map.values) {
        stdout.printf ("%d\n", value);
    }

    stdout.printf ("Итерация с помощью for\n");
    var it = map.map_iterator ();
    for (var has_next = it.next (); has_next; has_next = it.next ()) {
        stdout.printf ("%d\n", it.get_value ());
    }
}

Compile and Run

$ valac --pkg gee-0.8 gee-map.vala
$ ./gee-map

Содержание:

Свойства:

Методы создания:

Методы:

  • public override V @get (K key) Returns the value of the specified key in this map.

  • public override void @set (K key, V value) Inserts a new key and value into this map.

  • public override void clear () Removes all items from this collection. Must not be called on read-only collections.

  • public override bool has (K key, V value) Determines whether this map has the specified key/value entry.

  • public override bool has_key (K key) Determines whether this map has the specified key.

  • public override MapIterator<K,V> map_iterator () Returns an iterator for this map.

  • public override bool unset (K key, out V value = null) Removes the specified key from this map.

Полный список коллекций см здесь.

Last updated