hashtable

hashtable键值对是什么? C#Hashtable 属于System.Collections; 命名空间 。。。列子上面有了,,键值集合比普通集合的好处就是:因为普通集合只能通过索引访问集合元素, , 如果一个集合有很多元素 ,  , 在不知道索引的情况下怎么快速的访问到指定元素呢,,,对啦,就用键值对集合 。。。Hashtable 集合的每个元素都是一个键/值(key/value)对,,一一对应, , 通过键key便可以找到相应的值 。。。Hashtable ht=new Hashtable(); 声明一个Hashtable集合假设一个学生类student,里面有name跟sex属性,我们创建一个学生对象studentstu=newstudent();stu.name ="张三";stu.sex="男";ht.Add(stu.name,stu);//Hashtable 添加元素,第一个key 为stu.name ,第2个value为student对象stu如果有保存了很多同学,,我们要找张三就可以这样ht["张三"]

HashTable有什么用?Map都是以键值对存储的,其实质就是一个存储键值对的Set集合,我相信如果你做过Android或者Java EE方面的项目的话,那么几乎不能避免不使用Map类或者说是其中的思想,很多时候只有亲自实践过才知道,最简单来说,里面的国际化都是键值对实现的 。一般的纯集合才会用List和Set 。
前缀以Hash开头表示以哈希方法存储键,需要重写hashCode()方法,避免键的重复 。
另外说明一点 , 没有HashTable这个类,在Java中是Hashtable,说明这是一个古老的类,与HashMap相比较,前者线程安全而后者不安全 , 实际开发中,应当尽量避免使用Hashtable类

Hashtable类是什么意思?哈希表(Hashtable)又称为“散置”,Hashtable是会根据索引键的哈希程序代码组织成的索引键(Key)和值(Value)配对的集合 。Hashtable 对象是由包含集合中元素的哈希桶(Bucket)所组成的 。而Bucket是Hashtable内元素的虚拟子群组,可以让大部分集合中的搜寻和获取工作更容易、更快速 。

哈希函数(Hash Function)为根据索引键来返回数值哈希程序代码的算法 。索引键(Key)是被存储对象的某些属性值(Value) 。当对象加入至Hashtable时,它存储在与对象哈希程序代码相符的哈希程序代码相关的Bucket中 。当在Hashtable内搜寻值时 , 哈希程序代码会为该值产生,并且会搜寻与该哈希程序代码相关的Bucket 。例如,student和teacher会放在不同的Bucket中,而dog和god会放在相同的Bucket中 。所以当索引键是唯一从Hashtable获取元素的性能时表现会较好 。Hash的四大优点如下所示 。

事先不需要排序 。

搜寻速度与数据多少无关 。

数字签名的密码技术保密性(Security)高 。

可做数据压缩(Data Compression),以节省空间 。

Java中HashMap和Hashtable分别是干什么用的?就是说他们有什么用途?什么时候用?1 HashMap不是线程安全的
hastmap是一个接口 是map接口的子接口,是将键映射到值的对象 , 其中键和值都是对象,并且不能包含重复键,但可以包含重复值 。HashMap允许null key和null value,而hashtable不允许 。
2HashTable是线程安全的一个Collection 。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable 。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许 。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey 。因为contains方法容易让人引起误解 。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现 。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步 , 而HashMap 就必须为之提供外同步 。

都是Hashtable,有什么不一样吗? 该怎么解决?很明显,2个不同的库环境下不同的hashtable的实现 。
建议传给session时用某个“统一的”序列化交换格式 。比如JSON或自定义的bytes串
比如把一个hashtable转换成{"a":"1","b":"2"}的字符串,再session.setAttribute("BookList", books.toString());
再String t=session.getAttribute("BookList");
Hashtable books =loadFromString(t);//实现一个从文本还原成对象 。

HashMap与HashTable的区别两者最主要的区别在于Hashtable是线程安全,而HashMap则非线程安全 。拓展资料:Hashtable的实现方法里面都添加了synchronized关键字来确保线程同步,因此相对而言HashMap性能会高一些,我们平时使用时若无特殊需求建议使用HashMap,在多线程环境下若使用HashMap需要使用Collections.synchronizedMap()方法来获取一个线程安全的集合(Collections.synchronizedMap()实现原理是Collections定义了一个SynchronizedMap的内部类 , 这个类实现了Map接口 , 在调用方法时使用synchronized来保证线程同步,当然了实际上操作的还是我们传入的HashMap实例,简单的说就是Collections.synchronizedMap方法帮我们在操作HashMap时自动添加了synchronized来实现线程同步,类似的其它Collections.synchronizedXX方法也是类似原理 。HashMap可以使用null作为key , 不过建议还是尽量避免这样使用 。HashMap以null作为key时,总是存储在table数组的第一个节点上 。而Hashtable则不允许null作为key 。HashMap继承了AbstractMap,HashTable继承Dictionary抽象类,两者均实现Map接口 。HashMap的初始容量为16 , Hashtable初始容量为11,两者的填充因子默认都是0.75 。HashMap扩容时是当前容量翻倍即:capacity*2,Hashtable扩容时是容量翻倍+1即:capacity*2+1 。HashMap和Hashtable的底层实现都是数组+链表结构实现 。
Hashtable 类在哪个包里面 java在Java中哈希表用于存储对象 , 实现快速检索,java中的HashTable , 就是哈希表,编程的时候使用这个类可以很方便的操作键值对 。
Java.util.Hashtable提供了种方法让用户使用哈希表,而不需要考虑其哈希表真正如何工作 。
哈希表类中提供了三种构造方法,分别是:
public Hashtable()
public Hashtable(int initialcapacity)
public Hashtable(int initialCapacity,float loadFactor)

Hashtable与HashMap有什么区别?hashmap

线程不安全

允许有null的键和值

效率高一点、

方法不是Synchronize的要提供外同步

有containsvalue和containsKey方法

HashMap 是Java1.2 引进的Map interface 的一个实现

HashMap是Hashtable的轻量级实现



hashtable

线程安全

不允许有null的键和值

效率稍低、

方法是是Synchronize的

有contains方法方法

、Hashtable 继承于Dictionary 类

Hashtable 比HashMap 要旧

HashMap和Hashtable有什么区别?1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;


2.Hashtable 中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的 。即是说 , 在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable 了;而对于HashMap,则需要额外的同步机制 。但HashMap的同步问题可通过Collections的一个静态方法得到解决:
Map Collections.synchronizedMap(Map m)
这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的 。


3. 在HashMap中 , null可以作为键 , 这样的键只有一个;可以有一个或多个键所对应的值为null 。当get()方法返回null值时,即可以表示 HashMap中没有该键 , 也可以表示该键所对应的值为null 。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断 。

4.HashTable使用Enumeration,HashMap使用Iterator。

以上只是表面的不同,它们的实现也有很大的不同 。

5.HashTable中hash数组默认大小是11,增加的方式是 old*2+1 。HashMap中hash数组的默认大小是16,而且一定是2的指数 。详细请见 http://leonandjava.javaeye.com/blog/485244

HashTable用法?Hashtable> hashTable = new Hashtable>();
Hashtableh = new Hashtable ();
h.put("60.221.253.204", "3128");
hashTable.put("60.221.253.204", h);

Hashtableh = new Hashtable ();
h.put("59.39.56.50", "3128");
hashTable.put("59.39.56.50", h);

可能还可以优化一下

java中的Hashtable怎么用,请详细举例子说明,拜托了 谢谢【hashtable】就是哈希表,下面这个示例创建了一个数字的哈希表 。它将数字的名称用作键:Hashtable numbers= new Hashtable();
 numbers.put("one", 1);
 numbers.put("two", 2);
 numbers.put("three", 3);
要获取一个数字,可以使用以下代码:
Integer n = numbers.get("two");
 if (n != null) {
 System.out.println("two = " + n);
 }

java中hashtable怎样存储数据和读取数据Hashtable-哈希表类

以哈希表的形式存储数据,数据的形式是键值对.
特点:
查找速度快,遍历相对慢
键值不能有空指针和重复数据

创建
Hashtable ht=new
Hashtable();

添值

ht.put(1,"Andy");
ht.put(2,"Bill");
ht.put(3,"Cindy");
ht.put(4,"Dell");
ht.put(5,"Felex");
ht.put(6,"Edinburg");
ht.put(7,"Green");

取值

String str=ht.get(1);
System.out.println(str);// Andy

对键进行遍历

Iterator it = ht.keySet().iterator();

while (it.hasNext()) {
Integer key = (Integer)it.next();

System.out.println(key);
}

对值进行遍历

Iterator it = ht.values().iterator();

while (it.hasNext()) {
String value =https://www.zaoxu.com/jjsh/bkdq/(String) it.next();

System.out.println(value);
}

取Hashtable记录数

Hashtable ht=new Hashtable();

ht.put(1,"Andy");
ht.put(2,"Bill");
ht.put(3,"Cindy");
ht.put(4,"Dell");
ht.put(5,"Felex");
ht.put(6,"Edinburg");
ht.put(7,"Green");

int i=ht.size();// 7

删除元素

Hashtable ht=new Hashtable();

ht.put(1,"Andy");
ht.put(2,"Bill");
ht.put(3,"Cindy");
ht.put(4,"Dell");
ht.put(5,"Felex");
ht.put(6,"Edinburg");
ht.put(7,"Green");

ht.remove(1);
ht.remove(2);
ht.remove(3);
ht.remove(4);

System.out.println(ht.size());// 3


Iterator it = ht.values().iterator();

while (it.hasNext()) {
// Get value
String value =https://www.zaoxu.com/jjsh/bkdq/(String)
it.next();
System.out.println(value);
}

hashtable实现了哪个接口Hashtable和HashMap的区别:1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的.即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制.但HashMap的同步问题可通过Collections的一个静态方法得到解决:Map Collections.synchronizedMap(Map m)这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的.3.在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null.当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null.因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断.

Hashtable和Hashmap如何使用?有什么很大的区别?用法: 在java中,我们可以按照特定的方式来存储数据,从而达到快速检索的目的 。都属于Map接口的类,实现了将惟一键映射到特定的值上 。区别: HashMap是多线程不安全的 。Hashtable是多线程安全的 。但HashMap性能比Hashtable好.HashMap 类没有分类或者排序 。它允许一个 null 键和多个 null 值 。Hashtable 类似于 HashMap,但是不允许 null 键和 null 值 。它也比 HashMap 慢,因为它是同步的 。

哈希表有什么好处散列表是一种数据结构,通过散列函数(也就是 hash 函数)将输入映射到一个数字,一般用映射出的数字作为存储位置的索引 。数组在查找时效率很高,但是插入和删除却很低 。而链表刚好反过来 。设计合理的散列函数可以集成链表和数组的优点,在查找、插入、删除时实现 O(1) 的效率 。散列表的存储结构使用的也是数组加链表 。执行效率对比可以看下图 1.3:散列表的主要特点:1.将输入映射到数字2. 不同的输入产生不同的输出3. 相同的输入产生相同的输出4. 当填装因子超过阈值时,能自动扩展 。填装因子 = 散列表包含的元素数 / 位置总数,当填装因子 =1,即散列表满的时候,就需要调整散列表的长度,自动扩展的方式是:申请一块旧存储容量 X 扩容系数的新内存地址 , 然后把原内存地址的值通过其中的 key 再次使用 hash 函数计算存储位置,拷贝到新申请的地址 。5. 值呈均匀分布 。这里的均匀指水平方向的,即数组维度的 。如果多个值被映射到同一个位置,就产生了冲突 , 需要用链表来存储多个冲突的键值 。极端情况是极限冲突,这与一开始就将所有元素存储到一个链表中一样 。这时候查找性能将变为最差的 O(n),如果水平方向填充因子很?。承┙诘阆碌牧幢碛趾艹? ,那值的均匀性就比较差 。
hashtable是什么?Hashtable类基于IDictionary接口,因此该集合中的每一元素是键和值对 。

Hashtable由包含集合元素的存储桶组成 。存储桶是Hashtable中各元素的虚拟子组,与大多数集合中进行的搜索和检索相比,它可令搜索和检索更简单、更快速 。每一存储桶都与一个哈希代码关联,该哈希代码是使用哈希函数生成的并基于该元素的键 。

哈希函数是基于键返回数值哈希代码的算法 。键是正被存储的对象的某一属性的值 。哈希函数必须始终为相同的键返回相同的哈希代码 。一个哈希函数能够为两个不同的键生成相同的哈希代码,但从哈希表检索元素时,为每一唯一键生成唯一哈希代码的哈希函数将令性能更佳 。

在Hashtable中用作元素的每一对象必须能够使用Object.GetHashCode方法的实现为其自身生成哈希代码 。但是,还可以通过使用Hashtable构造函数(该构造函数将IHashCodeProvider实现作为其参数之一接受),为Hashtable中的所有元素指定一个哈希函数 。

在将一个对象添加到Hashtable时,它被存储在存储桶中,该存储桶与匹配该对象的哈希代码的哈希代码关联 。当在Hashtable内搜索一个值时,为该值生成哈希代码 , 并且搜索与该哈希代码关联的存储桶 。

例如,一个字符串的哈希函数可以采用该字符串中每一字符的ASCII代码并它们添加到一起来生成一个哈希代码 。字符串“picnic”将具有与字符串“basket”的哈希代码不同的哈希代码;因此 , 字符串“picnic”和“basket”将处于不同的存储桶中 。与之相比,“stressed”和“desserts”将具有相同的哈希代码并将处于相同的存储桶中 。

usingSystem;
usingSystem.Collections;
publicclassSamplesHashtable
{

publicstaticvoidMain()
{

//CreatesandinitializesanewHashtable.
HashtablemyHT=newHashtable();
myHT.Add( "First ","3 ");
myHT.Add( "Second ","2 ");
myHT.Add( "Third ","1 ");

//DisplaysthepropertiesandvaluesoftheHashtable.
Console.WriteLine("myHT ");
Console.WriteLine("Count:{0} ",myHT.Count);
Console.WriteLine(myHT[ "First "]);//***也可以这它!
Console.WriteLine("KeysandValues: ");
PrintKeysAndValues(myHT);
}
publicstaticvoidPrintKeysAndValues(HashtablemyList)
{
IDictionaryEnumeratormyEnumerator=myList.GetEnumerator();
Console.WriteLine("\t-KEY-\t-VALUE- ");
while(myEnumerator.MoveNext())
Console.WriteLine( "\t{0}:\t{1} ",myEnumerator.Key,myEnumerator.Value);

}
}

HashMap和Hashtable有什么区别?HashMap,基于哈希表的 Map 接口的实现 。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键 。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同 。)此类不保证映射的顺序 , 特别是它不保证该顺序恒久不变 。此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能 。迭代 collection 视图所需的时间与 HashMap 实例的"容量"(桶的数量)及其大小(键-值映射关系数)成比例 。所以,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低) 。

Hashtable , 类实现一个哈希表,该哈希表将键映射到相应的值 。任何非 null 对象都可以用作键或值 。为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode 方法和 equals 方法 。

HashMap和Hashtable的区别1 HashMap不是线程安全的
hastmap是一个接口 是map接口的子接口 , 是将键映射到值的对象,其中键和值都是对象 , 并且不能包含重复键,但可以包含重复值 。HashMap允许null key和null value,而hashtable不允许 。
2 HashTable是线程安全的一个Collection 。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable 。HashMap允许将null作为一个entry的key或者value,而Hashtable不允许 。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey 。因为contains方法容易让人引起误解 。Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现 。最大的不同是 , Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时 , 不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步 。Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差
public static void main(String args[]) {
HashTable h=new HashTable();
h.put("用户1",new Integer(90));
h.put("用户2",new Integer(50));
h.put("用户3",new Integer(60));
h.put("用户4",new Integer(70));
h.put("用户5",new Integer(80));
Enumeration e=h.elements();
while(e.hasMoreElements()){ System.out.println(e.nextElement()); }

java中hashmap和hashtable的区别1 HashMap不是线程安全的hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键 , 但可以包含重复值 。HashMap允许null key和null value , 而hashtable不允许 。2 HashTable是线程安全的一个Collection 。HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口 , 主要区别在于HashMap允许空(null)键值(key),由于非线程安全 , 效率上可能高于Hashtable 。HashMap允许将null作为一个entry的key或者value,而Hashtable不允许 。HashMap把Hashtable的contains方法去掉了 , 改成containsvalue和containsKey 。因为contains方法容易让人引起误解 。Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现 。最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时 , 不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步 。Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异 。

java中HashMap和HashTable有什么共同点和区别1 HashMap不是线程安全的
hastmap是一个接口 是map接口的子接口 , 是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值 。HashMap允许null key和null value,而hashtable不允许 。
2HashTable是线程安全的一个Collection 。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable 。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许 。
HashMap把Hashtable的contains方法去掉了 , 改成containsvalue和containsKey 。因为contains方法容易让人引起误解 。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现 。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是 , 在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步 。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异 。

hashmap 和hashtable 有什么区别1 HashMap不是线程安全的
hastmap是一个接口 是map接口的子接口 , 是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值 。HashMap允许null key和null value , 而hashtable不允许 。
2 HashTable是线程安全的一个Collection 。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable 。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许 。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey 。因为contains方法容易让人引起误解 。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现 。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步 。
Hashtable和HashMap采用的hash/rehash算法都大概一样 , 所以性能不会有很大的差异 。

关于EXCEL中的INT函数比如我A1单元格有一个数据13.18,接着我们在编辑栏输入公式=int(a1) 。按下回车之后,就可以得到A1单元格数据的取整结果,int函数是向下取整的 , 因为13.18的下面是13,所以取整为13 。而对于负数来说,-14在-13.8的下面,所以取整就会得到-14的 。在Excel中经常会制作许多表格,例如:已知某县8个月出生的人口数,现在要计算出这8个月的平均出生人口数,但人口数不可能为小数,所以这时就应该进行取整处理,INT函数的功能就可以体现出来了 。操作步骤:打开Excel表格,在单元格中输入数据 。选中一个输出单元格,然后输入=INT(AVERAGE(A1:A8)),按Enter键确定 。现在就可以看到输出单元格中出现了最终结果 。
如何使用PHP5中的Clone函数php的__clone()方法对一个对象实例进行的浅复制,对象内的基本数值类型进行的是传值复制,而对象内的对象型成员变量,如果不重写__clone方法,显式的clone这个对象成员变量的话,这个成员变量就是传引用复制,而不是生成一个新的对象.如第28行注释所说balance = $balance;}}class Person {private $id;private $name;private $age;public $account;public function __construct($name, $age, Account $account) {$this->name = $name;$this->age = $age;$this->account = $account;}public function setId($id) {$this->id = $id;}public function __clone() {#复制方法,可在里面定义再clone是进行的操作$this->id = 0;$this->account = clone $this->account;#不加这一句,account在clone是会只被复制引用,其中一个account的balance被修改另一个也同样会被修改}}$person = new Person("peter", 15, new Account(1000));$person->setId(1);$person2 = clone $person;$person2->account->balance = 250;var_dump($person, $person2);?>

如何将数据从hashmap转存到hashtable中HashMap , 基于哈希表的Map接口的实现 。此实现提供所有可选的映射操作 , 并允许使用null值和null键 。(除了非同步和允许使用null之外,HashMap类与Hashtable大致相同 。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变 。此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get和put)提供稳定的性能 。迭代collection视图所需的时间与HashMap实例的"容量"(桶的数量)及其大小(键-值映射关系数)成比例 。所以,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低) 。Hashtable,类实现一个哈希表,该哈希表将键映射到相应的值 。任何非null对象都可以用作键或值 。为了成功地在哈希表中存储和获取对象,用作键的对象必须实现hashCode方法和equals方法 。

请问 , 我可以往hashtable里存对应的key(string)键value(函数)值对么,到时候直接通过取key , 回调值方法?我理解你的意思 , 你的意思是说,将一个string作为一个提示词,然后将一个函数名存入到hashtable的value中 , 然后在运行时,根据输入的不同的string来调用不同的算法!

如果是这样的话,我可以明确告诉你,存入函数或函数体都是不对的,存入函数名,必须要使用eval类似的动态编译的方法才会使用你的方案成功——动态编译是最拉尽能的,而存入函数体也是不对的,因为hashtable适合存的是小型的数据,不适保保存大量的数据 。

其实,可以考虑存入委托 , 因为key与value均为object类型 , 只要取出时用(delegate)强制转换一下即可达到你要的效果 。比如对某个方案做回调等等 。

但是这些其实都是不最佳的方法——为什么不考虑设计模式中的策略模式呢?策略模式是将算法家族进行封装,以实现不同的调用方法,如果有些时间策略模式不太符合时,可以考虑工厂模式与策略模式的结合——所以建议你使用设计模式,而不是使用hashtable进行你所谓的设计 。


如果是面向对象编程,不会使用设计模式是一种悲哀 。不建议你使用你提问的这种方式 。

具体解释ArrayList 和List,HashMap和Hashtable的区别ArrayList: 使用大小可以按需动态增大的数组来实现IList接口的类 , 列表中的每个元素都是对象 。IList接口中的方法是很少的 。

List:是类属类(Generic Class),实现的是强类型的(每个元素都在List类实例化时指定了类型)列表,可以通过索引存取元素,可以排序,提供了比较强大的方法集合 。

Hashtable:这个类根据key的值计算hash值,依据hash值来组织key/value这样一对一对的数据 。可用来做人名匹配到人的各种属性这样的对照表,key可以重复的 。

HashMap:和Hashtable类似,但是key具有唯一性 。可用来做例如身份证号匹配到人的各种属性这样的映射表 。

Hashtable跟HashMap的区别 Vector,ArrayList和List的异同答:就ArrayList与Vector主要从二方面来说.

一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的 , 不是同步的

二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半

就HashMap与HashTable主要从三方面来说 。

一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现

二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的 , 不是同步的

三.值:只有HashMap可以让你将空值作为一个表的条目的key或value

请说明集合类ArrayList与 HashMap的区别首先就内部的元素而言,ArrayList储存的是单个对象 , 即
ArrayList al = new ArrayList();
而HashMap储存的是一组一组的key和value,像:
HashMap hm = new HashMap();
这样 。

另一个,就内部结构而言 , ArrayList是有序的,而HashMap无序 。

c#中Dictionary,ArrayList , Hashtable和数组 Array 的区别一
在C#中,Dictionary提供快速的基于键值的元素查找 。当你有很多元素的时候可以使用它 。它包含在System.Collections.Generic名空间中 。
在使用前,你必须声明它的键类型和值类型 。
详细说明
必须包含名空间System.Collection.Generic
Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值)
键必须是唯一的,而值不需要唯一的
键和值都可以是任何类型(比如:string, int, 自定义类型,等等)
通过一个键读取一个值的时间是接近O(1)
键值对之间的偏序可以不定义
创建和初始化一个Dictionary对象
Dictionary myDictionary = new Dictionary();

ArrayList是命名空间System.Collections下的一部分,在使用该类时必须进行引用,同时继承了IList接口,提供了数据存储和检索 。ArrayList对象的大小是按照其中存储的数据来动态扩充与收缩的 。所以,在声明ArrayList对象时并不需要指定它的长度 。

Hashtable(哈希表),命名空间System.Collections 。用于处理和表现类似keyvalue的键值对 , 其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值 。Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对.

数组
数组在C#中最早出现的 。在内存中是连续存储的,所以它的索引速度非常快 , 而且赋值与修改元素也很简单 。但是数组存在一些不足的地方 。在数组的两个数据间插入数据是很麻烦的 , 而且在声明数组的时候必须指定数组的长度,数组的长度过长,会造成内存浪费,过段会造成数据溢出的错误 。如果在声明数组时我们不清楚数组的长度,就会变得很麻烦 。

在C#中LIST、ArrayList、hashtable三种有什么区别?ArrayList和Hashtable是1.0时代的东西了,一个表一个字典

2.0以后引入泛型就使用List和Dicitionary了

这属于价值观不同吗?该怎么解决?你好,楼主 。你女朋友有这么大的反应是很正常的 , 因为你是她的“男朋友”,也就是她心目中的依靠,女人都希望自己的男人能给自己更多的安全感(我女朋友也经常这样告诉我),希望自己所依靠的人是很靠得住的 。而在别人面前,如果你很出色 , 这更会成为她的骄傲,所以你的女朋友是希望你能给她一种可靠的,沉稳的 , 踏实的 。
你在上文的表述中的表现就很容易让你的女朋友尴尬,她更希望你刚强一点,特别是用“求”这个字眼 。他希望你不会因为小事去求人,要刚强一些,如果你当时是去取钱来还,那这样就更不会有失神份的感觉 。说到底她就是气逆有点不争气 。我再说:她希望你能成为她的骄傲,她的自豪 。
如果你的女朋友还对你不是很了解,那可能你会很麻烦,因为 , 她不敢拿自己的婚姻交给一个靠不住的人 。如果你的女朋友住够了解你,那问题不会很麻烦 。
不管如何,你必须先去认错,并作很仔细的解释 , 并介绍自己的 。自己是个什么样的人(最好有例子和解释),再作保证 , 最重要的,付诸行动,这是她最看重的,你保证了就要去好好表现,她如果爱你,不会生你很久的气的,更不会对你努力的解释和表现视而不见 。

我该怎么办?我总是感觉自己跟别人不一样 我感觉跟别人一样就是平凡人 就是错的 因为社会什么你好,你这是有抑郁症的征兆哦

这三种定义有啥区别 ?List是一个可变长度的数组类型,可以通过list[i]来访问,没有特殊的处理,可以当成一个数组来看待
Dictionary是一个字典类型 , 前面一个string是字典里的关键字(key),后面的string是字典里的实际内容,访问方式downEd[key],可以当成字典看待 , 通过key来查询字典内容,key在字典里唯一
Queue 是队列 , 在数据结构中讲过,遵从先进先出原则 , 有特殊的入队、出队方法,入队后队列长度+1,入队的string加之queue的最后位置 , 出队后队列长度-1,出队的string是queue的第一个 。
还有一个很相像的就是堆栈Stack,和队列很像,只不过他的进出原则是后进先出原则

为什么电线都是2种色,这两种色的电线有什么不一样吗?用在市电交流电时方便区分火线零线,用在直流电时方便区分正负电 , 一般红线是火线或正电

HashMap和Hashtable的区别HashMap和Hashtable的区别:

1、HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别 。主要的区别有:线程安全性,同步(synchronization),以及速度 。

2、HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value) , 而Hashtable则不行) 。

3、HashMap是非synchronized,而Hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个Hashtable;而如果没有正确的同步的话,多个线程是不能共享HashMap的 。Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好 。

4、另一个区别是HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的 。所以当有其它线程改变了HashMap的结构(增加或者移除元素) , 将会抛出ConcurrentModificationException,但迭代器本身的remove()方法移除元素则不会抛出ConcurrentModificationException异常 。但这并不是一个一定发生的行为 , 要看JVM 。这条同样也是Enumeration和Iterator的区别 。

5、由于Hashtable是线程安全的也是synchronized,所以在单线程环境下它比HashMap要慢 。如果你不需要同步,只需要单一线程 , 那么使用HashMap性能要好过Hashtable 。
HashMap不能保证随着时间的推移Map中的元素次序是不变的 。

HashTable , HashSet和Dictionary的区别1.HashTable

哈希表(HashTable)表示键/值对的集合 。在.NET
Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key-value的键值
对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值 。Hashtable中key-value键值对均为
object类型 , 所以Hashtable可以支持任何类型的keyvalue键值对,任何非 null 对象都可以用作键或值 。


在哈希表中添加一个key/键值对:HashtableObject.Add(key,); 

在哈希表中去除某个key/键值对:HashtableObject.Remove(key);

从哈希表中移除所有元素: HashtableObject.Clear();

判断哈希表是否包含特定键key: HashtableObject.Contains(key);

2.HashSet

HashSet类主要是设计用来做高性能集运算的 , 例如对两个集合求交集、并集、差集等 。集合中包含一组不重复出现且无特性顺序的元素,HashSet拒绝接受重复的对象 。

HashSet的一些特性如下:

a. HashSet中的值不能重复且没有顺序 。

b. HashSet的容量会按需自动添加 。

3.Dictionary

Dictionary表示键和值的集合 。

Dictionary是一个泛型

他本身有集合的功能有时候可以把它看成数组

他的结构是这样的:Dictionary

他的特点是存入对象是需要与[key]值一一对应的存入该泛型

通过某一个一定的[key]去找到对应的值

4.HashTable和Dictionary的区别:

(1).HashTable不支持泛型,而Dictionary支持泛型 。

(2). Hashtable 的元素属于 Object 类型,所以在存储或检索值类型时通常发生装箱和拆箱的操作,所以你可能需要进行一些类型转换的操作,而且对于int,float这些值类型还需要进行装箱等操作,非常耗时 。

(3).单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快,
容量利用更充分 。多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable
进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock
语句进行保护, 效率大减 。

(4)在通过代码测试的时候发现key是整数型Dictionary的效率比Hashtable快,如果key是字符串型,Dictionary的效率没有Hashtable快 。


static void IntMethod()
{
int count = 1000000;
Dictionary dictionary = new Dictionary();
Hashtable hashtable = new Hashtable();
for (int i = 0; i < count; i++)
{
dictionary.Add(i,i);
hashtable.Add(i,i);
}

Stopwatch stopwatch = Stopwatch.StartNew();
for (int i = 0; i < count; i++)
{
int value = https://www.zaoxu.com/jjsh/bkdq/dictionary[i];
}
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);

stopwatch = Stopwatch.StartNew();
for (int i = 0; i < count; i++)
{
object value = https://www.zaoxu.com/jjsh/bkdq/hashtable[i];
}
stopwatch.Stop();

Console.WriteLine(stopwatch.ElapsedMilliseconds);

}

static void MethodString()
{
int count = 1000000;
Dictionary dictionary = new Dictionary();
Hashtable hashtable=new Hashtable();
for (int i = 0; i < count; i++)
{
dictionary.Add(i.ToString(),"aaa");
hashtable.Add(i.ToString(),"aaa");
}

Stopwatch stopwatch = Stopwatch.StartNew();
for (int i = 0; i < count; i++)
{
string value=https://www.zaoxu.com/jjsh/bkdq/dictionary[i.ToString()];
}
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);

stopwatch = Stopwatch.StartNew();
for (int i = 0; i < count; i++)
{
object value = https://www.zaoxu.com/jjsh/bkdq/hashtable[i.ToString()];
}
stopwatch.Stop();

Console.WriteLine(stopwatch.ElapsedMilliseconds);
}

Map,Dictionary,Hash Table 有哪些异同第一个区别就先来说说继承关系吧
如果你baidu一下,会发现网上的大致说法与“由于Java发展的历史原因 。Hashtable是基于陈旧的Dictionary类的 , HashMap是Java 1.2引进的Map接口的一个实现 。”相同 。
这种说法没有错,但是不够准确,特别是对于我们这种大众菜鸟来说,如果不去深究的话,可能就会造成一些理解上的差异 。简单的认为Hashtable没有继承Map接口 。

我们可以参考一下最新的JDK1.6的源码,看看这两个类的定义:

public class Hashtableextends Dictionary implements Map, Cloneable, java.io.Serializable {…}
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable {…}

可以看到hashtable也是继承了Map接口 。

它们的不同是Hashtable(since JDK1.0)就继承了Dictionary这个抽象类,
而HashMap(since JDK1.2)继承的则是AbstractMap这个抽象类 。

第二个区别我们从同步和并发性上来说说它们两个的不同 。

可以通过这两个类得源码来分析,Hashtable中的主要方法都做了同步处理,而HashMap则没有 。

可以说Hashtable在默认情况支持同步,而HashMap在默认情况下是不支持的 。

我们在多线程并发的环境下,可以直接使用Hashtable,但是要使用HashMap的话就要自己增加同步处理了 。

对HashMap的同步处理可以使用Collections类提供的synchronizedMap静态方法;

或者直接使用JDK5.0之后提供的java.util.concurrent包里的ConcurrentHashMap类 。

python的dictionary和hash table的区别在于可以按照key或value排序:

测试dict字典内容如下:
test_dict={'zhangsan':20,'lisi':30,'wangerma':40}
1. 按key顺序排列
for key in sorted(test_dict.iterkeys()):print "%s: %s" % (key, test_dict[key])

若要按key值降序排列:
for key in sorted(test_dict.iterkeys(),reverse=True):print "%s: %s" % (key, test_dict[key])

2. 按value数序排列
for key, value in sorted(test_dict.iteritems(), key=lambda (k,v): (v,k)):print "%s: %s" % (key, value)

若要按value值降序排列:
for key, value in sorted(test_dict.iteritems(), key=lambda (k,v): (v,k),reverse=True):print "%s: %s" % (key, value)

转自:

java中HashMap和HashTable有什么共同点和区别hashmap和hashtable都实现了map接口,因此很多特性非常相似 。但是,他们有以下不同点:
hashmap允许键和值是null , 而hashtable不允许键或者值是null 。
hashtable是同步的,而hashmap不是 。因此,hashmap更适合于单线程环境,而hashtable适合于多线程环境 。
hashmap提供了可供应用迭代的键的集合,因此,hashmap是快速失败的 。
另一方面,hashtable提供了对键的列举(enumeration) 。一般认为hashtable是一个遗留的类 。

求问HashMap和Hashtable有什么区别和什么相同点?HashMap和HashTable本质上是差不多的 , 在1.4版本以前是没有HashMap的
只有HashTable , 他们的区别是HashTable是线程安全的,但是HashMap不是线程安全的,HashMap的性能要比HashTable好一些,所以,在不考虑线程安全的情况下 , Java是推荐使用HashMap的 。

hashtable和hashmap有什么区别,共同之处?、 a.Hashtable是继承自陈旧的Dictionary类的,HashMap继承自AbstractMap类同时是Java 1.2引进的Map接口的一个实现 。
b.也许最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是 。这就意味着,然你可以不用采取任何特殊的行为就可以在一个 多线程的应用程序中用一个Hashtable,但你必须同样地为一个HashMap提供外同步 。一个方便的方法就是利用Collections类的静态的synchronizedMap()方法,它创建一个线程安全的Map对象,并把它作为一个封装的对象来返回 。这个对象的方法可以让你同步访问潜在的HashMap
C.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样 。
D.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以) 。
E.HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样 。

java中,HashMap和Hashtable有什么区别?HashMap和Hashtable都实现了Map接口,因此很多特性非常相似 。但是,他们有以下不同点:HashMap允许键和值是null,而Hashtable不允许键或者值是null 。Hashtable是同步的,而HashMap不是 。因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境 。HashMap提供了可供应用迭代的键的集合,因此,HashMap是快速失败的 。另一方面,Hashtable提供了对键的列举(Enumeration) 。一般认为Hashtable是一个遗留的类 。
Map接口 , HashMap和HashTable的相同点和不同点分别是什么?Hashtable和HashMap的区别:
1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;
2.Hashtable中的方法是同步的 , 而HashMap中的方法在缺省情况下是非同步的 。即是说 , 在多线程应用程序中 , 不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制 。但HashMap的同步问题可通过Collections的一个静态方法得到解决:
Map Collections.synchronizedMap(Map m)
这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法 , 使得底层的HashMap即使是在多线程的环境中也是安全的 。
3.在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null 。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null 。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断 。

Map
├Hashtable
├HashMap
└WeakHashMap
Map接口
请注意,Map没有继承Collection接口,Map提供key到value的映射 。一个Map中不能包含相同的key,每个key只能映射一个value 。Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射 。Hashtable类
Hashtable继承Map接口,实现一个key-value映射的哈希表 。任何非空(non-null)的对象都可作为key或者value 。
添加数据使用put(key, value),取出数据使用get(key),这两个基本操作的时间开销为常数 。
Hashtable通过initial capacity和load factor两个参数调整性能 。通常缺省的load factor0.75较好地实现了时间和空间的均衡 。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作 。
使用Hashtable的简单示例如下,将1,2,3放到Hashtable中,他们的key分别是”one”,”two”,”three”:
Hashtable numbers = new Hashtable();
numbers.put(“one”, new Integer(1));
numbers.put(“two”, new Integer(2));
numbers.put(“three”, new Integer(3));
要取出一个数 , 比如2,用相应的key:
Integer n = (Integer)numbers.get(“two”);
System.out.println(“two = ” + n);
由于作为key的对象将通过计算其散列函数来确定与之对应的value的位置,因此任何作为key的对象都必须实现hashCode和equals方法 。hashCode和equals方法继承自根类Object,如果你用自定义的类当作key的话,要相当小心,按照散列函数的定义,如果两个对象相同,即obj1.equals(obj2)=true,则它们的hashCode必须相同 , 但如果两个对象不同,则它们的hashCode不一定不同,如果两个不同对象的hashCode相同,这种现象称为冲突,冲突会导致操作哈希表的时间开销增大,所以尽量定义好的hashCode()方法 , 能加快哈希表的操作 。
如果相同的对象有不同的hashCode,对哈希表的操作会出现意想不到的结果(期待的get方法返回null) , 要避免这种问题,只需要牢记一条:要同时复写equals方法和hashCode方法,而不要只写其中一个 。
Hashtable是同步的 。HashMap类
HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和nullkey 。 , 但是将HashMap视为Collection时(values()方法可返回Collection),其迭代子操作时间开销和HashMap的容量成比例 。因此,如果迭代操作的性能相当重要的话,不要将HashMap的初始化容量设得过高,或者load factor过低 。WeakHashMap类
WeakHashMap是一种改进的HashMap,它对key实行“弱引用”,如果一个key不再被外部所引用,那么该key可以被GC回收 。