`

装饰一个类需特别注意的点

 
阅读更多

装饰者模式为一个类添加附加的职责提供了方法,但我们装饰一个对象通常只是实现了该interface的方法,却忘记了Objectequalshashcode的方法!!

在继承父类时,推荐建议是重写toString()方法。同样,我这里也推荐下,实现装饰者模式时,也同时复写equals和hashCode方法。

 

遇到的问题:

今天在处理Hadoop的Text的时刻遇到了一点问题,Text是Hadoop中功能类似于JDK中String的类。

 

    MapWritable result = new MapWritable();
    Map<String, Integer> resultTmp = new HashMap<String, Integer>();
    for (MapWritable hmw : results.getResults()) {
    	for(Writable writable:hmw.keySet()){
    		Text text = (Text)writable;
    		String key = new String(text.getBytes());
		Integer total = resultTmp.get(key);
    		IntWritable increment  = (IntWritable)hmw.get(writable);
    		if (total!=null){
    			resultTmp.put(key, total+increment.get());
    		}else{
    			resultTmp.put(key, increment.get());
    		}
    	}
    }
    for(String key:resultTmp.keySet()){
    	result.put(new Text(key), new IntWritable(resultTmp.get(key)));
    }
    return result;

 

上面得到的Key的String会多出一些空格。这是由于new String(text.getBytes())导致的。这里不需要转成为String,直接使用Text即可。

 

    MapWritable result = new MapWritable();
    Map<Text, Integer> resultTmp = new HashMap<Text, Integer>();
    for (MapWritable hmw : results.getResults()) {
    	for(Writable writable:hmw.keySet()){
    		Text key = (Text)writable;
		Integer total = resultTmp.get(key);
    		IntWritable increment  = (IntWritable)hmw.get(writable);
    		if (total!=null){
    			resultTmp.put(key, total+increment.get());
    		}else{
    			resultTmp.put(key, increment.get());
    		}
    	}
    }
    for(Text key:resultTmp.keySet()){
    	result.put(key, new IntWritable(resultTmp.get(key)));
    }
    return result;

 

考虑到另一个问题,equals和hashcode是否与String一样的呢!?加入到Map后?会不会导致覆盖呢?

这也是我写本文的一个重要根源所在。

--> Hadoop的源码还是OK的。

 

分享到:
评论

相关推荐

    一级消防工程师考场上答题需特别注意什么问题.doc

    例如,关于建筑装饰幕墙的三性试验,只需写明“气密性、水密性、风压变形性”即可获得满分。额外添加的非得分点信息不会增加分数,但也不会扣除。 3. **书写清晰**:字体清晰易读是获取分数的前提。如果阅卷人无法...

    行业分类-设备装置-查字典专用书签及装饰相框、装饰盒与花束[1].zip

    标题中的“行业分类-设备装置-查字典专用书签及装饰相框、装饰盒与花束[1].zip”表明这是一个与特定行业分类相关的压缩文件,主要涉及设备装置领域,其中包含了查字典专用书签、装饰相框、装饰盒和花束的设计或使用...

    行业分类-设备装置-具有光泽性的装饰纸和热固性树脂装饰板.zip

    标题中的“行业分类-设备装置-具有光泽性的装饰纸和热固性树脂装饰板”表明了这个主题涉及的是装饰材料领域,特别是与设备装置相关的技术和产品。这些产品可能被广泛应用于家具制造、室内装修和其他建筑装饰行业。...

    模板 红色装饰类网站源码[自适应手机版].zip

    总之,这个红色装饰类网站源码提供了一个实践响应式设计、网站开发和定制的好机会,同时也涉及到了版权意识、前端技术学习以及网站优化等多个方面的知识点。对于想要深入理解和掌握网站开发的初学者或设计师来说,这...

    汽车装饰与美容实训指导书--内部装饰.pdf

    汽车内部装饰主要包括六个部分:仪表板装饰、地毯装饰、顶衬装饰、座椅装饰、车内饰品以及车用香品。每一部分都有其独特的装饰方法和步骤。 仪表板装饰是汽车内部的重要组成部分,分为金属、塑料和复合材料等不同...

    行业分类-设备装置-一种数字化装饰保温一体化板制作的装饰保温墙体.zip

    标题中的"行业分类-设备装置-一种数字化装饰保温一体化板制作的装饰保温墙体.zip",表明这是一个关于建筑行业的技术文档,特别是涉及到了设备装置在数字化装饰保温一体化板制造过程中的应用。 装饰保温一体化板,...

    行业分类-设备装置-具有带电纤维的装饰纸.zip

    标题“行业分类-设备装置-具有带电纤维的装饰纸.zip”揭示了这个压缩包文件主要涉及的是一个特定行业——设备装置领域内的一种特殊产品,即具有带电纤维的装饰纸。这种装饰纸可能用于室内设计、家具制造或建筑装饰等...

    函数装饰器和闭包1

    这意味着装饰器的设置是在程序启动阶段完成的,对于需要在程序运行时动态调整的场景,需要特别注意这一点。 【闭包】 闭包是函数的一个特性,它可以访问并记住其定义范围内的非全局变量,即使这些变量在其外部作用...

    装饰企业wordpress主题

    在当今互联网时代,拥有一个美观、功能强大的网站对于任何企业来说都是至关重要的,特别是对于装饰企业来说。装饰企业WordPress主题就是为此类企业量身定制的一种网页设计解决方案。这款主题充分利用了WordPress的...

    行业分类-设备装置-一种清水混凝土凹凸木纹装饰墙体的制作方法.zip

    标题中的“行业分类-设备装置-一种清水混凝土凹凸木纹装饰墙体的制作方法”表明了这个压缩包文件所涉及的主要领域是建筑行业的设备装置,具体聚焦于清水混凝土的装饰技术。清水混凝土是一种特殊的混凝土工艺,它在...

    非常漂亮的装饰材料网站源代码

    【标题】"非常漂亮的装饰材料网站源代码"指的是一个专门设计用于展示装饰材料的网站的源码。这个源代码经过精心设计,具有高度的视觉吸引力和用户体验,特别适合那些希望在线展示其产品的企业使用。 【描述】中的...

    Python装饰器使用你可能不知道的几种姿势

    Python装饰器是函数编程中的一个重要概念,它允许在不修改原函数代码的情况下,增加函数的功能。装饰器本质上是一个接受函数作为参数并返回一个新函数的函数,通常用于在函数执行前后添加一些额外的操作。在Python中...

    褶皱纸张背景淡雅清新风艺术生装饰画毕业作品展示论文答辩ppt模板.zip

    该压缩包文件“褶皱纸张背景淡雅清新风艺术生装饰画毕业作品展示论文答辩ppt模板.zip”提供了一个专为艺术生设计的PPT模板,适用于他们的论文答辩和毕业作品展示。以下是对这个资源中包含的知识点的详细说明: 1. *...

    电子-一种抗静电装饰板

    标题 "电子-一种抗静电装饰板" 暗示了我们讨论的主题是关于电子领域中的一种特殊材料,即抗静电装饰板。这种材料主要用于电子设备的制造和安装,特别是那些对静电敏感的组件,因为静电可能对电子元器件造成损害。 ...

    2021年教师招聘考试题库《注意》考点强化练习带答案解析.docx

    【注意】是心理学中的一个重要概念,它涉及到个体对信息的选择性关注和加工。在教育领域,特别是教师招聘考试中,了解注意的相关知识至关重要。以下是基于题目内容所涵盖的知识点的详细解析: 1. 注意的类型: - *...

    电子-一种用于遮挡控电箱的装饰画框

    标题中的“电子-一种用于遮挡控电箱的装饰画框”揭示了这个知识点主要集中在电子技术的应用上,特别是涉及到家居或室内设计的创新解决方案。在这个案例中,电子技术被巧妙地融合到日常生活的装饰元素中,即装饰画框...

    【IT十八掌徐培成】Java基础第05天-02.final-内部类.zip

    内部类是定义在一个外部类(也称为包含类)内部的类,它可以访问外部类的所有成员,包括私有成员,这是内部类的一大特点。这种特性使得内部类可以非常方便地与外部类进行交互,创建紧密耦合的组件。 内部类主要分为...

    装饰装修质量检测员练习试题及答案.docx

    - **知识点:**低温环境下施工需要特别注意,以免影响工程质量。 - **答案解析:**正确。冬期施工时,环境温度确实不应低于5℃,以防水泥地面早期受冻。 **30. 裱糊壁纸的基层必须干燥** - **知识点:**壁纸施工前...

    可爱小朋友装饰的卡通PPT边框背景图片.zip

    本资源是一个名为"可爱小朋友装饰的卡通PPT边框背景图片.zip"的压缩包,专门提供了一种以小朋友为主题,带有卡通风格的PPT边框背景图片,适用于制作儿童教育、亲子活动或幼儿园相关主题的演示文稿。 首先,我们来...

Global site tag (gtag.js) - Google Analytics