存储数据键和项目对的类(Dictionary对象)

<%

Class Dictionary

Public Copyright, Developer, Name, Version, Web

Private aryKey() 

Private aryItem() 

Private iCompareMode

Private Sub Class_Initialize() 

'请保留此信息 

Copyright = "2002 www.ChinaOK.Net, All rights reserved." 

Developer = "ChinaOK" 

Name = "Dictionary" 

Version = "1.0b" 

Web = "http://www.ChinaOK.Net" 

Redim aryKey(0) 

Redim aryItem(0) 

aryKey(0)="" 

aryItem(0)="" 

iCompareMode=0 

End Sub

Public Function Add(sKey,Item) 

InsertSort sKey,Item 

End Function

Public Function Exists(sKey) 

If BinSearch(sKey)=0 Then 

Exists=false 

Else 

Exists=True 

End if 

End Function

Public Function Items() 

Items=aryItem 

End Function

Public Function Keys() 

Keys=aryKey 

End Function

Public Function Remove(sKey) 

DeleteSort sKey 

End Function

Public Function RemoveAll() 

Redim aryKey(0) 

Redim aryItem(0) 

aryKey(0)="" 

aryItem(0)="" 

End Function

Property Get Count() 

Dim Len1,Len2 

Len1=ubound(aryKey) 

Len2=ubound(aryItem) 

If Len1<>Len2 Then Redim Preserve aryItem(Len1) 

Count=Len1 

End Property

Property Get Item(sKey) 

Dim iTop 

iTop=0 

iTop = BinSearch(sKey) 

If iTop<>0 Then 

Item=aryItem(iTop) 

Else 

Add sKey,"" 

Item="" 

End If 

End Property

Property Let Item(sKey,NewItem) 

Dim iTop 

iTop=0 

iTop = BinSearch(sKey) 

If iTop<>0 Then 

aryItem(iTop)=NewItem 

Else 

Add sKey,NewItem 

End If 

End Property

Property Let Key(sKey,sNewKey) 

Dim iTop 

iTop = 0 

iTop = BinSearch(sKey) 

If iTop<>0 Then 

aryKey(iTop)=sNewKey 

Else 

Err.Raise 19782,"myDictionary","未找到元素" & sKey,"",0 

End If 

End Property

Property Let CompareMode(iMode) 

If Count()>0 Then Err.Raise 19783,"myDictionary","设置字符串keyword比較模式必须在Items为空时设置","",0 

If (iMode<>0 And iMode<>1) Then iMode=0 

iCompareMode=iMode 

End Property

Property Get CompareMode() 

CompareMode=iCompareMode 

End Property

Private Function BinSearch(sKey) 

'折半查找算法 

Dim Result 

Result=0 

Dim iHigh,iLow,iMid 

iHigh = Count() 

iLow = 1 

Do While (iLow<=iHigh) 

iMid=(iLow+iHigh)\2 

If strComp(aryKey(iMid),sKey,iCompareMode)=0 Then 

Result=iMid 

Exit Do 

End If 

If strComp(aryKey(iMid),sKey,iCompareMode)=1 Then 

iHigh=iMid-1 

Else 

iLow=iMid+1 

End if 

Loop 

BinSearch=Result 

End Function

Private Function DeleteSort(sKey) 

Dim iTop,I,iLen 

iTop=BinSearch(sKey) 

If iTop=0 Then 

Err.Raise

End Function

存储数据键和项目对的类(Dictionary对象)的更多相关文章

  1. JavaWeb_EL表达式存储数据及获得项目路径

    菜鸟教程 传送门 EL表达式[百度百科]:EL(Expression Language) 是为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供 ...

  2. [C++]变量存储类别,指针和引用,类与对象,继承与派生的一些摘要

    C++中共有四种存储类别标识符:auto/static/register/extern 1.auto 函数或分程序内定义的变量(包括形参)可以定义为auto(自动变量).如果不指定存储类别,则隐式定义 ...

  3. Android中数据存储(三)——SQLite数据库存储数据

    当一个应用程序在Android中安装后,我们在使用应用的过程中会产生很多的数据,应用都有自己的数据,那么我们应该如何存储数据呢? 数据存储方式 Android 的数据存储有5种方式: 1. Share ...

  4. 8.7 JSON存储数据方式(JavaScript对象表示法)

    8.7 JSON存储数据方式(JavaScript对象表示法) JSON JavaScript 对象表示法(JavaScript Object Notation) 是一种存储数据的方式. 一.创建JS ...

  5. C#核心基础--浅谈类和对象的概念

    浅谈类和对象的概念 一.什么是类?什么是对象? 学习一门面向对象编程语言,我们必须得知道什么是类?什么是对象? 类(Class)实际上是对某种类型的对象定义变量和方法的原型.它表示对现实生活中一类具有 ...

  6. C#面向对象基础 —— 类与对象

    文章来源: https://www.cnblogs.com/huluobozu/p/5070500.html 一.类与对象 类是面向对象编程的基本单元:类造出来的变量叫对象. 一个类包含俩种成员:字段 ...

  7. C#面向对象基础--类与对象

    1.类与对象 类是面向对象编程的基本单元:类造出来的变量叫对象. 一个类包含俩种成员:字段与方法. 字段即变量,方法即函数. 面向对象思想:教给我们如何合理的运用类的规则去编写代码. 2.类的字段 字 ...

  8. 一个Web项目中实现多个数据库存储数据并相互切换用过吗?

    最近公司一个项目需要连接多个数据库(A和B)操作,根据不同的业务模块查询不同的数据库,因此需要改造下之前的spring-mybatis.xml配置文件以及jdbc.properties配置文件,项目后 ...

  9. android开发中的5种存储数据方式

    数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences ...

随机推荐

  1. SE 2014年5月23日

    两站点 A 和 B,由于业务往来需要,所以工程师提出vpn技术,同时需要保证业务流在internet上的安全性,同时在这里站点均为固定ip地址. 通过分析以上信息,确定这里使用 IPSec VPN的主 ...

  2. Matlab实现PCA

    在主成分分析(PCA)中,介绍了PCA的数学原理,其有用Matlab能够非常方便地对矩阵进行操作! 比方,用Matlab求多个样本的协方差矩阵.求矩阵的特征根和特征向量等. 以下介绍用Matlab实现 ...

  3. ASP.NET管线与应用程序生命周期

    ASP.NET管线与应用程序生命周期 ASP.NET管线与应用程序生命周期 8.1节介绍了IIS的系统架构和HTTP请求处理的总体流程,从中可以知道每个ASP.NET网站都对应着一个Web应用程序,此 ...

  4. Spring Data Redis—Pub/Sub(附Web项目源码) (转)

    一.发布和订阅机制 当一个客户端通过 PUBLISH 命令向订阅者发送信息的时候,我们称这个客户端为发布者(publisher). 而当一个客户端使用 SUBSCRIBE 或者 PSUBSCRIBE ...

  5. 从零開始学习OpenCL开发(一)架构

    多谢大家关注 转载本文请注明:http://blog.csdn.net/leonwei/article/details/8880012 本文将作为我<从零開始做OpenCL开发>系列文章的 ...

  6. Setup Git Server in CentOS 6.3

    0. Environment: Server machine: CentOS 6.3 x86 Client machine: Windows 10 Pro x86_64 1. Install ssh ...

  7. cocos2d-x 3.0游戏实例学习笔记 《跑酷》第一步--- 开始界面

    说明:这里是平局:晓风残月前辈的博客.他是将泰然网的跑酷教程.用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

  8. Mysql学习笔记(一)数据类型

    原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型     Mysql数据类型             含义(有符号)     tinyint(m ...

  9. 对HGE游戏引擎的一次封装

    HGE游戏引擎是一个开源2D游戏引擎,基于directX. 它的渲染及逻辑是基于帧回调的框架模式, 其提供一些主要的图像操作和输入控制功能. 我在之前写一个2D游戏的时候对它整个框架进行了一次封装,非 ...

  10. gitLab添加ssh key

    电脑新装了一台虚拟机,想要和gitLab建立一个安全的ssh连接,步骤如下 1.本机生成ssh key 系统环境:Linux 使用root用户登录,执行命令:ssh-keygen -t rsa -C ...