Реализует: Iterable<G>, Collection<G>, Set<G>
Набор из элементов типа G. Дубликаты выявляются через вычисление хэш каждого ключа, что можно настроить через передачу указателей на функции хэширования и проверки равенства ключей нужным вам способом.
Вы можете получить вид коллекции только для чтения через свойство read_only_view, напр. my_map.read_only_view
. Оно вернет вам оболочку, которая будет иметь тот же интерфейс, что и коллекция внутри, но без возможности модифицировать данную коллекцию.
Эта реализация лучше подходит для сильно разнородных значений. В случае высокого значения избыточности хэшей или большого количества данных предпочтение отдается реализации дерева, такой как TreeSet .
Sets are unordered and do not contain duplicate elements.
using Gee;
void main () {
var my_set = new HashSet<string> ();
my_set.add ("one");
my_set.add ("two");
my_set.add ("three");
my_set.add ("two"); // will not be added because it's a duplicate
foreach (string s in my_set) {
stdout.printf ("%s\n", s);
}
}
$ valac --pkg gee-0.8 gee-set.vala
$ ./gee-set
- public EqualDataFunc<G> equal_func { get; }The elements' equality testing function.
- public HashDataFunc<G> hash_func { get; }The elements' hash function.
- public override bool read_only { get; }
- public override int size { get; }
- public HashSet (owned HashDataFunc<G>? hash_func = null, owned EqualDataFunc<G>? equal_func = null) Constructs a new, empty hash set.
- public override bool @foreach (ForallFunc<G> f)
- public override bool add (G key)
- public override void clear ()
- public override bool contains (G key)
- public override Iterator<G> iterator ()
- public override bool remove (G key)
Полный список коллекций см здесь.