当前位置: 网学 > 编程文档 > VB > 正文

在VB里巧用集合

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/17
下载{$ArticleTitle}原创论文样式

李成俊 赵文杰

---- VB 提 供 一 种 很 有 用 的 数 据 类 型 集 合(Collection)。 她 的 工 作 原 理 类 似 与C 里 的 链 表, 可 以 很 方 便 的 实 现 插 入, 删 除。 并 且 在 使 用 了Key 之 后, 检 索 操 作 也 变 得 非 常 简 单。 但 其 编 程 上 的 方 便 却 带 来 了 效 率 上 的 急 剧 下 降( 尤 其 在 大 数 据 量 时 会 让 你 无 法 忍 受)。 以 下 举 两 个 例 子 来 讨 论 一 下 怎 样 把 集 合 和 数 组 结 合 使 用, 使 程 序 在 方 便 和 效 率 之 间 达 到 一 种 平 衡。
---- 1 . 要 求 建 立 一 数 据 结 构, 用 来 保 存 学 生 的 学 号, 姓 名 和 成 绩, 并 在 需 要 时 以 成 绩 的 高 低 按 顺 序 输 出 这 些 信 息。

---- 这 里 我 想 提 供 两 种 解 决 方 法( 当 然 还 有 其 他 方 法)。

---- 第 一 种: 完 全 用 集 合 来 保 存 数 据。

---- 首 先 定 义 一 个 结 构 如 下( 该 结 构 同 时 用 与 第 二 种 方 式)

Type tMyType
   ID As Long
   Name As String
   Score As Integer
End Type
再定义类clsData如下
Public ID As Long
Public Name As String
Public Score As Integer
  并定义插入函数用来接受数据并插入到数据结构中
Public Function InsertToCol(pData As tMyType)
  注释:其中m_ColData保存记录
  Dim myClass As New clsData
  Set myClass = Nothing
  For iLoopCtrl = 1 To m_ColData.Count
    If m_ColData(iLoopCtrl).Score
< = pData.Score Then Exit For
  Next
  myClass.ID = pData.ID
  myClass.Name = pData.Name
  myClass.Score = pData.Score
If m_ColData.Count = 0 Or iLoopCtrl
= m_ColData.Count Then
    m_ColData.Add Item:=myClass
  Else
m_ColIndex.Add Item:=myClass,
  before:=iLoopCtrl
  End If
End Function
这时,对每个记录做处理如下
Public Function OutProcess()
  For iLoopCtrl = 1 To m_ColData.Count
    CurrentID = m_ColData(iLoopCtrl).ID
    CurrentName = m_ColData(iLoopCtrl).Name
CurrentScore = m_ColData(iLoopCtrl).Score
注释:对当前记录做相应处理
  Next
End Function

---- 第 二 种: 将 数 组 与 集 合 结 合 起 来, 用 数 组 保 存 数 据 而 用 集 合 保 存 排 序 信 息。
---- 首 先 定 义 如 下 变 量

Public m_Array(99) As tMyType
注释:根据需要也可以定义成动态数组
Public m_ColIndex As New Collection
注释:用来保存索引信息
向数组中插入数据的函数如下
Public Function InsertToArray(pData As tMyType)
  If iCurIndex > 99 Then Exit Function
  For iLoopCtrl = 1 To m_ColIndex.Count
If m_Array(m_ColIndex(iLoopCtrl)).Score
< = pData.Score Then Exit For
  Next
  If m_ColIndex.Count = 0 Or iLoopCtrl
     = m_ColIndex.Count Then
    m_ColIndex.Add iLoopCtrl - 1
  Else
    m_ColIndex.Add iLoopCtrl - 1, before:=iLoopCtrl
  End If
  m_Array(iCurIndex).ID = pData.ID
  m_Array(iCurIndex).Name = pData.Name
  m_Array(iCurIndex).Score = pData.Score
  iCurIndex = iCurIndex + 1
End Function

这时,对每个记录
  • 上一篇资讯: 如何建立文件关联
  • 下一篇资讯: 实现端口对端口的聊天
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号