存储数据键和项目对的类(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. dell N5010

    Inspiron N5010Microsoft Windows 10 企业版 (64位) (英特尔)Intel(R) Core(TM) i3 CPU       M 370  @ 2.40GHz(24 ...

  2. java使用AES加密解密 AES-128-ECB加密

    java使用AES加密解密 AES-128-ECB加密 import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; impo ...

  3. Qt调用word 例子

    Qt调用word 例子 Getting Microsoft Word Object to SaveAs #include <QtGui> #include <QAxObject> ...

  4. JS验证姓名、邮箱、电话号码

    <SCRIPTtype="text/javascript"> varredflag=0; //姓名验证 functionisName(){ varname=$('#na ...

  5. vs2012 它已停止工作 - 解决方案

    最近学习<Windows多媒体编程>本课程, 蛋疼, 学校原来是MFC... 然后安装vs2012.   后来又在几个插件.. 在这个问题. 开业,提示 vs2012 它已停止工作. wa ...

  6. android 编译调用C代码

    博客地址:www.zalezone.cn 前言 需求来源 这几天帮别人做一个简单的androidclient,也没什么功能,主要就是调用C代码来对手机的Wifi网络进行设置.于是也就引出了技术难点所在 ...

  7. 重新想象 Windows 8 Store Apps (7) - 控件之布局控件: Canvas, Grid, StackPanel, VirtualizingStackPanel, WrapGrid, VariableSizedWrapGrid

    原文:重新想象 Windows 8 Store Apps (7) - 控件之布局控件: Canvas, Grid, StackPanel, VirtualizingStackPanel, WrapGr ...

  8. 清除Android工程中没用到的资源(转)

    项目需求一改再改,UI一调再调,结果就是项目中一堆已经用不到但却没有清理的垃圾资源,不说工程大小问题,对新进入项目的人或看其他模块的代码的人来说,这些没清理的资源可能也可能会带来困扰,所以最好还是清理 ...

  9. leetcode先刷_Climbing Stairs

    水的问题. 以为很常见.青蛙跳楼梯.能跳一步可以跳两步,它实际上是一个斐波那契数. 注意.空间O(1). class Solution { public: int climbStairs(int n) ...

  10. 栈实现java

    栈是一种“先去后出”的抽象的数据结构.例如:我们在洗盘子的时候,洗完一个盘子,将其放在一摞盘子的最上面,但我们全部洗完后,要是有盘子时,我们会先从最上面的盘子开始使用,这种例子就像栈的数据结构一样,先 ...