存储数据键和项目对的类(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. 备份恢复与CRM集成的sharepoint站点

    在部署CRM与Sharepoint2010集成文档管理之后,一直担心如果需要在新服务器上重新部署CRM, 那么之前与CRM集成的Sharepoint2010文档内容,是否可以重新正确映射到相应的文档位 ...

  2. 如何禁止使用teamviwer的使用

    前几天有人问我teamviwer怎么禁止,刚开始做实验的时候过滤了teramviwer.com解析出来的IP,可是还是没有用,其实将teamviwer登陆的服务器地址在路由器上过滤,teramviwe ...

  3. auto_ptr and scoped_ptr

    #include "boost/scoped_ptr.hpp" #include <iostream> #include <memory>//contain ...

  4. 高版本jQuery设置checkbox状态注意事项

    jQuery 1.9 以后, 使用 .attr(“checked”, true) 或  attr(“checked”, “checked”) 将无法正确设置 checkbox的状态, 同样的, 使用 ...

  5. Knockout应用开发指南 第四章:模板绑定

    原文:Knockout应用开发指南 第四章:模板绑定 模板绑定The template binding 目的 template绑定通过模板将数据render到页面.模板绑定对于构建嵌套结构的页面非常方 ...

  6. C#获取设备的IP和Mac类

    /// <summary> /// 此类用于获得设备的Ip和Mac /// </summary> public class Mac { [DllImport("Iph ...

  7. php 禁止 URL 直接访问 php文件

    通过判断访问来源来实现. $fromurl="http://www.111.com/index.php"; //只能从这个地址访问 if( $_SERVER['HTTP_REFER ...

  8. POJ1201 差分约束

    给定ai,bi, ci 表示区间[ai,bi]内至少有ci个点, 要求对于所有给定的ai,bi,ci,  至少多少个点才能满足题目的条件 重做这一题学到的一点是, 可以设变量来表示一些东西,然后才能找 ...

  9. Emacs经常使用快捷键的注意事项

    一直用VIM,尝试了好几次Emacs都被它"多得像天上的星星"一样的快捷键给吓倒了.这几天最终下定决心再次尝试. 将它的Tutor练习了一下,顺便对经常使用快捷键做了一下笔记,方便 ...

  10. 添加xml文件编辑语法提示

    找到Struts的lib目录 找到struts2-core-文件并解压开 这个struts.dtd文件才是我们需要添加的文件 双击XML Catalog 点击ADD Key中复制粘贴D:\web\st ...