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

标签:类,asp,HashMap
0
投稿

猜你喜欢

  • 正则表达式字面量在ECMAScript5中的变化

    2012-04-26 16:23:16
  • Python类class参数self原理解析

    2023-12-23 11:51:35
  • mysql事务隔离级别详情

    2024-01-17 13:56:23
  • 全方位清理浮动

    2009-06-16 14:51:00
  • mysql巡检脚本(必看篇)

    2024-01-22 07:24:54
  • sql2005开发版 没有任何功能可以安装

    2024-01-16 20:48:18
  • Java中@Pattern注解常用的校验正则表达式学习笔记

    2022-08-07 11:12:10
  • js自动闭合html标签(自动补全html标记)

    2023-08-25 07:06:35
  • Oracle复合索引与空值的索引使用问题小结

    2024-01-21 17:35:38
  • 科讯商业版中用到的ajax空间与分页函数

    2024-04-17 10:05:45
  • 如何制作一个从Access数据库中读取记录的下拉菜单?

    2010-06-29 21:23:00
  • Pytorch中实现只导入部分模型参数的方式

    2023-01-24 05:53:25
  • layui点击按钮页面会自动刷新的解决方案

    2024-04-18 09:33:11
  • 修改fckeditor的文件上传功能步骤

    2023-03-19 17:31:28
  • Python 开发工具PyCharm安装教程图文详解(新手必看)

    2023-04-25 05:01:08
  • Python:format格式化字符串详解

    2021-02-11 19:23:58
  • SQL Server 2005恢复Master库

    2011-05-16 13:11:00
  • python中get和post有什么区别

    2022-04-17 16:45:15
  • 初学python数组的处理代码

    2023-10-14 19:30:19
  • python中virtualenvwrapper安装与使用

    2022-07-28 03:21:52
  • asp之家 网络编程 m.aspxhome.com