HASH GAME - Online Skill Game GET 300
在 常 见 用 法 中 ,集 合( c l e t o )和 数 学 上 直 观 的 集( s t olcin e )的 概 念是相同的。集是一个唯一项组,也就是说组中没有重复项。实际上, “集 合 框 架 ”包 含 了 一 个 Set 接 口 和 许 多 具 体 的 Set 类 。 但 正 式 的 集 概 念 却 比 Java 技 术 提 前 了 一 个 世 纪 ,那 时 英 国 数 学 家 George Boo le 按 逻 辑 正 式 的 定 义 了 集 的 概 念 。 大 部 分 人 在 小 学 时 通 过 我 们 熟 悉 的 维 恩 图 引 入 的 “集 的 交 ”和 “集 的 并 ”学 到 过 一 些 集 的 理 论 。
我们必须确定如何将新的对象添加到集合中。可以将对象添加到集 合的末尾、开头或者中间的某个逻辑位置。 从集合中删除一个对象后,对象集合中现有对象会有什么影响呢? 可 能 必 须 将 内 存 移 来 移 去 ,或 者 就 在 现 有 对 象 所 驻 留 的 内 存 位 置 下 一 个 洞 。 在 内 存 中 建 立 对 象 集 合 后 ,必 须 确 定 如 何 定 位 特 定 对 象 。可 建 立 一 种 机 制 ,利 用 该 机 制 可 根 据 某 些 搜 索 条 件( 例 如 身 份 证 号 )直 接 定 位 到 目 标 对 象 ;否 则 ,便 需 要 遍 历 集 合 中 的 每 个 对 象 ,直 到 找 到 要 查 找 的 对象为止。 前面大家已经学习过了数组。数组的作用是可以存取一组数据。 但 是 它 却 存 在 一 些 缺 点 ,使 得 无 法 使 用 它 来 比 较 方 便 快 捷 的 完 成 上 述 应 用场景的要求。 1. 首 先 ,在 很 多 数 情 况 下 面 ,我 们 需 要 能 够 存 储 一 组 数 据 的 容 器 ,这 一 点 虽 然 数 组 可 以 实 现 ,但 是 如 果 我 们 需 要 存 储 的 数 据
到目前为止,我们已经学习了如何创建多个不同的对象,定义了这 些对象以后,我们就可以利用它们来做一些有意义的事情。 举 例 来 说 ,假 设 要 存 储 许 多 雇 员 ,不 同 的 雇 员 的 区 别 仅 在 于 雇 员 的 身 份 证 号 。我 们 可 以 通 过 身 份 证 号 来 顺 序 存 储 每 个 雇 员 ,但 是 在 内 存 中 实 现 呢 ? 是 不 是 要 准 备 足 够 的 内 存 来 存 储 1000 个 雇 员 , 然 后 再 将 这 些 雇 员 逐 一 插 入 ? 如 果 已 经 插 入 了 500 条 记 录 ,这 时 需 要 插 入 一 个 身 份 证 号 较 低 的 新 雇 员 , 怎 么 办 呢 ? 是 在 内 存 中 将 500 条 记 录 全 部 下 移 后 , 该 再从开头插入新的记录? 还是创建一个映射来记住每个对象的位置? 当决定如何存储对象的集合时,必须考虑如下问题。 对于对象集合,必须执行的操作主要以下三种: u u u 添加新的对象 删除对象 查找对象
的 个 数 多 少 并 不 确 定 。比 如 说 :我 们 需 要 在 容 器 里 面 存 储 某 个 应用系统的当前的所有的在线用户信息, 当前的在线用户信 而 息是时刻都可能在变化的。 也就是说,我们需要一种存储数 据的容器, 能够自动的改变这个容器的所能存放的数据数量 它 的 大 小 。这 一 点 上 ,如 果 使 用 数 组 来 存 储 的 话 ,就 显 得 十 分 的 笨拙。 2. 我 们 再 假 设 这 样 一 种 场 景 :假 定 一 个 购 物 网 站 ,经 过 一 段 时 间 的 运 行 ,我 们 已 经 存 储 了 一 系 列 的 购 物 清 单 了 ,购 物 清 单 中 有商品信息。 果我们想要知道这段时间里面有多少种商品被 如 销售出去了。 么我们就需要一个容器能够自动的过滤掉购物 那 清 单 中 的 关 于 商 品 的 重 复 信 息 。如 果 使 用 数 组 ,这 也 是 很 难 实 现的。 3. 最 后 再 想 想 ,我 们 经 常 会 遇 到 这 种 情 况 ,我 知 道 某 个 人 的 帐 号 名 称 ,希 望 能 够 进 一 步 了 解 这 个 人 的 其 他 的 一 些 信 息 。也 就 是 说 ,我 们 在 一 个 地 方 存 放 一 些 用 户 信 息 ,我 们 希 望 能 够 通 过 用户的帐号来查找到对应的该用户的其他的一些信息。 举个 再 查字典例子: 设我们希望使用一个容器来存放单词以及对于 假 这个单词的解释,而当我们想要查找某个单词的意思的时候, 能够根据提供的单词在这个容器中找到对应的单词的解释。 如 果使用数组来实现的话,就更加的困难了。 为 解 决 这 些 问 题 ,Java 里 面 就 设 计 了 容 器 集 合 ,不 同 的 容 器 集 合 以 不同的格式保存对象。