李培新的gravatar头像
李培新 2020-03-03 15:02:49

java中HashMap和 Hashtable的区别

大学java考试,考到了这个问题,问问各位牛牛的看法

所有回答列表(3)
947335690的gravatar头像
947335690  LV1 2020年3月4日

HashMap 和 Hashtable 的区别
HashMap是非线程安全的,HashTable是线程安全的;HashTable内部的方法基本都经过synchronized修饰。

因为线程安全的问题,HashMap要比HashTable效率高一点,HashTable基本被淘汰。
HashMap允许有null值的存在,而在HashTable中put进的键值只要有一个null,直接抛出NullPointerException。

Hashtable和HashMap有几个主要的不同:线程安全以及速度。仅在你需要完全的线程安全的时候使用Hashtable,而如果你使用Java5或以上的话,请使用ConcurrentHashMap吧

评论(0) 最佳答案
jianboluo的gravatar头像
jianboluo  LV3 2020年3月4日

   在我的MVC项目里,一个Model定义,

 

 

public class Admin

    {

        public long ID { get; set; }

        public string Name { get; set; }

        public bool IsSuperAdmin { get; set; }

 

        //.........

    }

    编辑该Model的View代码,

 

<div class="">

<input name="IsSuperAdmin" type="checkbox" id="checkIsSuperAdmin" @(Model.IsSuperAdmin ? "checked" : "")>

        <label class="" for="checkIsSuperAdmin">是否是超级管理员</label>

</div>

    后台Controller的代码,

 

[HttpPost]

        public ActionResult Update(Admin admin)

        {

            if (ModelState.IsValid)

            {

                //...........

            }

            //............

        }

    这时ModelState.IsValid是false,同时ModelState里存在这样一个错误,Key是IsSuperAdmin,Value是The value 'on' is not valid for IsSuperAdmin。 

    原因呢?因为checkbox的值value是'on',MVC无法将这个值转换成bool类型。

 

    解决方法,使用@Html.CheckBoxFor/@Html.CheckBox代替元素<input type="checkbox">。当使用@Html.CheckBoxFor/@Html.CheckBox

 

时,ASP.NET MVC会自动在后面生成一个隐藏的元素,用于保存bool值。这样model绑定时就不会出现这个错误了。

————————————————

版权声明:本文为CSDN博主「likingsn」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/likingsnblog/article/details/49890027

最代码_码鑫源的gravatar头像
最代码_码鑫源  LV6 2020年3月6日

 

Hashtable的应用非常广泛,HashMap是新框架中用来代替Hashtable的类,也就是说建议使用HashMap,不要使用Hashtable。可能你觉得Hashtable很好用,为什么不用呢?这里简单分析他们的区别。

1.Hashtable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。

查看Hashtable的源代码就可以发现,除构造函数外,Hashtable的所有 public 方法声明中都有 synchronized 关键字,而HashMap的源代码中则连 synchronized 的影子都没有,当然,注释除外。

2.Hashtable不允许 null 值(key 和 value 都不可以),HashMap允许 null 值(key和value都可以)。

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友