ASP实现类似Java中的Linked HashMap类
来源:asp之家 发布时间:2010-04-03 20:49:00
'--------------------------------------------------------------
'ASP版HashMap实现
'该实现存储数据为有序数据,类似Java中的LinkedHashMap
'--------------------------------------------------------------
Class HashMap
dim arr()
dim arr_len
'构造函数
private Sub Class_Initialize
'其中 arr(0,n)为key,arr(1,n)为value
arr_len = 0
redim arr(1,arr_len)
End Sub
'========================
'*put方法 往MAP中插入键值对,如果Key存在则覆盖
'@k 键值key
'@v key对应的value值
'========================
public Sub put(k,v)
dim is_update
is_update = false
arr_len = ubound(arr,2)
for i=0 to arr_len-1
if k=arr(0,i) then
arr(1,i) = v
is_update = true
exit for
end if
next
if not is_update then
arr_len = arr_len +1
redim preserve arr(1,arr_len)
arr(0,arr_len-1) = k
arr(1,arr_len-1) = v
end if
End Sub
'========================
'*getv方法 通过key值获取对应的value
'@k 键值key
'========================
public Function getv(k)
dim v
for i=0 to arr_len
if k=arr(0,i) then
v = arr(1,i)
exit for
end if
next
getv = v
End Function
'========================
'*keys方法 获取Map中所有的KEY,以数组形式返回
'========================
public Function keys()
dim v()
Redim v(arr_len)
for i=0 to arr_len-1
v(i) = arr(0,i)
next
keys = v
End Function
'========================
'*values方法 获取Map中所有的Value,以数组形式返回
'========================
public Function values()
dim v()
Redim v(arr_len)
for i=0 to arr_len-1
v(i) = arr(1,i)
next
values = v
End Function
'========================
'*remove方法 从MAP中移除指定key的键值对
'@k 键值key
'========================
public Sub remove(k)
arr_len = ubound(arr,2)
for i=0 to arr_len
if k=arr(0,i) then
v = arr(1,i)
for k = i to arr_len-1
arr(0,k) = arr(0,k+1)
arr(1,k) = arr(1,k+1)
next
arr_len = arr_len - 1
redim preserve arr(1,arr_len)
exit for
end if
next
End Sub
'========================
'*putAll 将源HashMap的所有值添加到当前对象中,如果存在重复key值将覆盖原有值
'@map 源HashMap
'========================
public Function putAll(map)
if typeName(map)<>"HashMap" then
response.Write "putAll只能存放HashMap"
else
for i=0 to map.length-1
put map.keys()(i),map.values()(i)
next
End If
End Function
'========================
'*length属性 Map中的键值对数
'========================
public property get length()
length = arr_len
End property
'========================
'*removeAll方法 移除MAP中所有值
'========================
public Sub removeAll()
arr_len = 0
redim arr(1,1)
End Sub
End Class


猜你喜欢
- 在Python中,我们令一个变量等于另外一个变量时,并不是把值传递给它,而是直接把指向的地址更改了。我们想要查看一个变量在内存中的地址,可以
- 本文实例讲述了Python实现的KMeans聚类算法。分享给大家供大家参考,具体如下:菜鸟一枚,编程初学者,最近想使用Python3实现几个
- 在讲样式表开发管理之前,我想插播一个小知识。前几天看web标准设计组里,看到龍佑康同学问到关于 block 和 inline 的区别。记得以
- 看了群主最后成像的图片,应该是循环了36次画方框,每次有10度的偏移。当然不能提前看答案,自己试着写代码。之前有用过海龟画图来画过五角星、奥
- 1 类继承Python 是面向对象的编程语言,因此支持面向对象的三大特性之一:继承。继承是代码重用的一种途径,Python 中的继承就像现实
- 对于DataFrame的修改操作其实有很多,不单单是某个部分的值的修改,还有一些索引的修改、列名的修改,类型修改等等。我们仅选取部分进行介绍
- 本文方案适用于Microsoft Sql Server 2008/2012/2012 r2/2014版本,以下简称MSSQLSERVER。M
- PDO::setAttributePDO::setAttribute — 设置属性(PHP 5 >= 5.1.0, PECL pdo
- 什么是存储过程存储过程(Stored Procedure)也成为存储程序,是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。即
- 内容摘要:本文介绍了使用SQL语句修改数据记录的两种方法,一是使用rs.update,二是使用conn.Execute(sql),相信对初学
- MS SQL性能是很不错的,但是数据库用了一段时间之后,数据库却变得很大,实际的数据量不大。一般都是数据库日志引起的!数据库日志的
- memoryview() 函数返回给定参数的内存查看对象(Momory view)。语法memoryview 语法:memoryview(o
- 以下的文章主要介绍的是MySQL 查询缓存的实际应用代码以及查看MySQL 查询缓存的大小 ,碎片整理,清除缓存以及监视MySQL 查询缓存
- PyCharm 中在使用Turtle(海龟)库绘图体系时,代码明明是正确可以运行的,但是没有提示 ,代码出现黄色标记以及红色波浪线 ,经验不
- 在本篇文章当中主要给大家介绍一个我们在使用类的时候经常使用但是却很少在意的黑科技——描述器,在本篇文
- MYSQL数据库安装完成后,默认最大连接数是100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,增加默认MYSQL连接数的方法有两
- 独立 fmt Log输出重定向golang的fmt包的输出函数 Println、Printf、PrintStack等,默认将打印输出到os.
- PHP下载图片后文件打开显示损坏问题用php写个图片下载方法,测试发现下载的图片大小都没问题,但是无法打开文件。解决方法如下:首先打开文件下
- 每个人都可以编写CSS代码,甚至你现在已经让它为你的项目工作了。但是CSS还可以更好吗?开始用这5个Tips改进你的CSS吧!一、关于CSS
- 为什么要做这个?mock 第三方服务时,需要使用,另外包括自身开发,有时也会用到python#!/usr/bin/env python2#