
public static void main(String[] args){
Map<Integer, Object>tables = new Hashtable<Integer, Object>()
Thread add = new Thread(new ThreadAdd(tables))
Thread del = new Thread(new ThreadDel(tables))
Thread count = new Thread(new ThreadCount(tables))
//启动线程
add.start()
del.start()
count.start()
}
/**
*添加对象线程
*/
private static class ThreadAdd implements Runnable{
private Map<Integer, Object>table
public ThreadAdd(Map<Integer, Object>tables){
this.table=tables
}
public void run() {
// TODO Auto-generated method stub
for(int i=0i<10i++){
table.put(i, new Object())
System.out.println("添加对象,序号为:"+i)
}
}
}
/**
*删除对象线程
*/
private static class ThreadDel implements Runnable{
private Map<Integer, Object>table
public ThreadDel(Map<Integer, Object>table){
this.table=table
}
public void run() {
// TODO Auto-generated method stub
for(int i=0i<10i++){
try {
Thread.sleep(100)
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
table.remove(i)
System.out.println("移除对象,序号为:"+i)
}
}
}
/**
*统计线程
*/
private static class ThreadCount implements Runnable{
private Map<Integer, Object>table
public ThreadCount(Map<Integer, Object>table){
this.table=table
}
public void run() {
// TODO Auto-generated method stub
for(int i=0i<10i++){
try {
Thread.sleep(50)
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
System.out.println("当前队列还剩"+table.size()+"个对象")
}
}
}
}
这是我的写的demo,不知道符合不符合你的意思,大家共同交流共同进步。
同意fancyivan的答案Hashtable h1 = new Hashtable()
Hashtable h2 = new Hashtable()
Hashtable h3 = new Hashtable()
h3.Add(001,"abc")
例如这h1,h2,h3这三个hashtable,h3里面有一个键值对(001,"abc")
然后把h3这个hashtable添加到h2里面
既
h2.Add(001,h3)(或者h2[001]=h3)
然后你这句h1=(hashtable)h2[001]就相当于把h3这个hashtable赋给了h1
当你遍历h1的时候结果就是(1,"abc")
hashtable是只有指定key才可以赋值,而你这句是相当与把一个hashtable赋给了另一个hashtable,所以不用指定key
一 简介
名词介绍 散列表(Hash table 也叫哈希表) 是根据关键码值(Key value)而直接进行访问的数据结构 也就是说 它通过把关键码值映射到表中一个位置来访问记录 以加快查找的速度 这个映射函数叫做散列函数 存放记录的数组叫做散列表
HashTable 表的优点 HashTable是System Collections命名空间提供的一个容器 HashTable中的key/value均为object类型 所以HashTable可以支持任何类型的key/value键/值对
HashTable的优点就在于其索引的方式 速度非常快
二 哈希表的简单 *** 作
在哈希表中添加一个keyvalue键值对 HashtableObject Add(key value)
在哈希表中去除某个keyvalue键值对 HashtableObject Remove(key)
从哈希表中移除所有元素 HashtableObject Clear()
判断哈希表是否包含特定键key HashtableObject Contains(key)
下面控制台程序将包含以上所有 *** 作
using System
using System Collections //file使用Hashtable时 必须引入这个命名空间
class hashtable
{
public static void Main()
{
Hashtable ht=new Hashtable() //file创建一个Hashtable实例
ht Add(E e) //添加keyvalue键值对
ht Add(A a)
ht Add(C c)
ht Add(B b)
string s=(string)ht[A]
if(ht Contains(E)) //file判断哈希表是否包含特定键 其返回值为true或false
Console WriteLine(the E keyexist)
ht Remove(C) //移除一个keyvalue键值对
Console WriteLine(ht[A]) //此处输出a
ht Clear() //移除所有元素
Console WriteLine(ht[A]) //file此处将不会有任何输出
}
}
三 遍历哈希表
遍历哈希表需要用到DictionaryEntry Object 代码如下
for(DictionaryEntry de in ht) // fileht为一个Hashtable实例
{
Console WriteLine(de Key) //de Key对应于keyvalue键值对key
Console WriteLine(de Value)//de Key对应于keyvalue键值对value
}
四 对哈希表进行排序
对哈希表进行排序在这里的定义是对keyvalue键值对中的key按一定规则重新排列 但是实际上这个定义是不能实现的 因为我们无法直接在Hashtable进行对key进行重新排列 如果需要Hashtable提供某种规则的输出 可以采用一种变通的做法
ArrayList akeys=new ArrayList(ht Keys) // file别忘了导入System Collections
akeys Sort() // file按字母顺序进行排序
for(string skey in akeys)
{
Console Write(skey + )
Console WriteLine(ht[skey]) // 排序后输出
lishixinzhi/Article/program/net/201311/12422
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)