http://blog.csdn.net/pc620/article/details/6254422

今天编写项目时遇到一个逻辑错误:

Hashtable ht2 = new Hashtable();

ht2 = ht1;

我以为像上面这样写就能实现在内存中将ht1复制一遍给ht2,但实际这样写是浅拷贝,ht2和ht1实际指向的是同一个地址,任意一个改变了hashtable的值另一个也相应的改变,就相当于ht2是ht1的引用。

要实现深拷贝,代码如下:

Hashtable ht2 = new Hashtable(ht1);

这样写ht2就不单单是引用了,会有自己的内存空间。不过有一个问题,虽然都是那几个值,但好像ht2中的每个值存放的位置和ht1不一样了~

注:谢谢eagle0123的提醒,我的这种方式如果value不是基本类型时也是浅拷贝!

Hashtable的深拷贝相关推荐

  1. Python 精选笔试面试习题—类继承、方法对象、包管理、闭包、可变类型作为默认参数、列表引用、sort与sorted、 append 和 extend、深拷贝和浅拷贝

    1. 类继承 如下代码 class A(object):def show(self):print 'This is calss A'class B(A):def show(self):print 'T ...

  2. 【STL源码剖析读书笔记】【第5章】关联式容器之hashtable

    1.hashtable在插入.删除.搜寻操作上具有"常数平均时间"的表现,不依赖输入元素的随机性. 2.hashtable通过hashfunction将元素映射到不同的位置,但当不 ...

  3. JavaScript深拷贝Json

    今天因为项目需要写了个Json格式的深拷贝(深度复制).很简单,没有做其他的判断,代码如下: function deepCopy(json){if(typeof json == 'number' || ...

  4. 对象特性---->深拷贝与浅拷贝

    浅拷贝:简单的赋值拷贝操作. 深拷贝:在堆区申请一块空间,进行拷贝操作. 浅拷贝:编译器提供的拷贝构造函数对传入值进行赋值拷贝操作 #include<iostream> using nam ...

  5. HashMap 和 Hashtable 的 6 个区别,最后一个没几个人知道!

    HashMap 和 Hashtable 是 Java 开发程序员必须要掌握的,也是在各种 Java 面试场合中必须会问到的. 但你对这两者的区别了解有多少呢? 现在,栈长我给大家总结一下,或许有你不明 ...

  6. java 中的 Enumeration 在Vector,Hashtable和web中的应用

    public interface Enumeration<E> 实现 Enumeration 接口的对象,它生成一系列元素,一次生成一个.连续调用 nextElement方法将返回一系列的 ...

  7. 在C#中应用哈希表(Hashtable)

    一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其 ...

  8. 调试JDK源码-Hashtable实现原理以及线程安全的原因

    调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...

  9. C语言的HashTable简单实现

    原文地址:http://blog.csdn.net/zmxiangde_88/article/details/8025541 HashTable是在实际应用中很重要的一个结构,下面讨论一个简单的实现, ...

  10. HashTable原理与实现

    memcached中hashtable部分的源码,hash部分的源码主要分布在assoc.h/c.hash.h/c中,总得来说代码比较简单,这里就稍微介绍一下. hashtable通常包括哈希函数和解 ...

最新文章

  1. 用到的 git 命令
  2. PopupWindow的一些使用总结
  3. swift 展示html富文本,Swift HTML富文本显示
  4. matlab相机标定
  5. c语言汉字转拼音,c语言汉字转拼音函数源码 汉字拼音转换
  6. 计算机网络分层协议及各层功能
  7. 12.分布式定时任务(xxl-job)
  8. 累积你的All Blue-使用集成库-PCB系列教程1-4
  9. 计算机二级excel高级筛选,Excel 如何按双条件执行高级筛选?
  10. 基于FPGA和ABZ增量式编码器的转子位置检测
  11. 【Echarts】- 制作饼图
  12. lap.lapjv使用方法
  13. Linux安装Oracle报Checking operating system version must be redhat-3, SuSE-9, redhat-4, UnitedLin
  14. 调试器GDB的基本使用方法
  15. 【Spring】Spring MVC原理及配置详解
  16. NORDIC Thingy:52 蓝牙 BLE 服务协议定义
  17. Geogebra 教程之 04 Geogebra 小程序
  18. 并查集——银河英雄传说()
  19. 腾讯放大招,首张区块链发票亮相深圳,日后发票报销几分钟搞定
  20. centos7.6 服务器搭建Java环境(若依--srs)

热门文章

  1. Introduction to modern cryptography 第二章阅读笔记
  2. 荣耀热键驱动无法安装
  3. 微软经典面试题(数字翻译为中文)
  4. Python 【趣头条】短视频的自动上传与发布实例演示,同时支持抖音、快手、哔哩哔哩、小红书、微视、西瓜视频、微信视频号等平台的视频自动化同步发布
  5. 头条视频中视频玩法技巧
  6. element时间日期选择器组件设置默认时间
  7. nifty bootstrap_nifty admin_nifty admin 下载-一个高端的bootstrap后台管理模板
  8. TDK是什么意思,TDK怎么写?怎么利于SEO优化?
  9. 日常生活中使用计算机要注意事项有哪些,笔记本电脑日常使用注意事项以及保养技巧...
  10. numpy对数据集进行shuffle