syaiful6/headbanger

Headbanger! PHP 数据结构

0.2.2 2016-05-30 08:57 UTC

This package is auto-updated.

Last update: 2024-09-12 17:42:48 UTC


README

Headbanger

PHP 数据结构或集合。

动机:PHP 只提供了数组和对象作为复合类型。没有列表、哈希表、集合等。PHP 中的数组可以做所有这些。这使得数组操作不可预测,有时充当有序集合、列表、有序映射。这个包旨在提供一些基本的数据结构来填补这个空缺。

安装

composer require syaiful6/headbanger

这个包包含了 Map、List、Set 和 Str 的实现。我们考虑字符串为容器,因为它可以通过数组表示法访问,并且当我们想要迭代字符串时,我们实际上想要迭代字符。

Map

Python 称这为 dict,Ruby 称这为类型 Hash。不管名字如何,这种数据类型可以映射键值对。通常键是唯一的(在一个映射中)。

映射上的主要操作是将值与某个键存储,并根据键提取值。对于给定的键也应有可能删除键值对。

这个包提供了一种数据类型的实现。即 HashMap,它还实现了 Countable、Traversable 和 ArrayAccess。因此,您可以将此实例视为数组。要删除键值对,请使用 unset($hash['somekey'])

注意:HashMap 是无序映射,不允许在迭代期间添加项,替换键值是允许的。遍历映射将仅给出键,您可以使用此键访问值。如果您需要值,请使用 values 方法,如果需要两者,请使用 ```items`` 方法。

$map = new Headbanger\HashMap();
// Add item, or just give map your array or any traversable on constructor
$map['one'] = 1;
$map['two'] = 2;
$map['three'] = 3;
// deleting
unset($map['one']);
// check if item exists
isset($map['one']);

List

列表或序列,表示一个有序值序列,这些值可以在列表中多次出现。将其视为有限序列。目前只提供了一个实现:ArrayList。使用 SplFixedArray 作为其存储。

您可以将 ArrayList 用作 Stack,其中最后添加的元素是第一个检索到的元素(“后进先出”)。使用 push 添加项目,并使用 pop(不带参数)从顶部检索项目。但是不要将 ArrayList 用作 Queue,它们对这种目的效率不高。但是是可能的。

Set

集合是一个无序的、没有重复元素的集合。常见的操作是删除重复条目和成员测试。集合还支持数学运算,如并集、交集、差集等。