`
seaboycs
  • 浏览: 128235 次
  • 性别: Icon_minigender_1
  • 来自: 南通
社区版块
存档分类
最新评论

Map 元素覆盖的小题目

    博客分类:
  • JAVA
阅读更多

那天无意间看到一个博客,写到关于Map 元素覆盖的问题,特意做了一个例子验证了一下:

 

package com.javaeye.demo;

public class Apple {

	private String name;
	private String address;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Apple other = (Apple) obj;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
}

 定义了一个Apple类,重写了hashCode  和 equals 方法,name相同的话2个对象就相等。

 

接下来是测试类:

package com.javaeye.demo;

import java.util.HashMap;
import java.util.Map;

public class AppleMain {

	public static void main(String[] args) {
		Apple apple1 = new Apple();
		apple1.setName("APPLE");
		apple1.setAddress("Beijing");
		
		Apple apple2 = new Apple();
		apple2.setName("APPLE");
		apple2.setAddress("Shanghai");
		
		Map<Apple, String> map = new HashMap<Apple, String>();
		map.put(apple1, "A");
		map.put(apple2, "B");
		
		for(Map.Entry<Apple, String> entry:map.entrySet()) {
		System.out.println(entry.getKey().getAddress() + "-" + entry.getValue());
		}

	}

}

 

猜猜答案:

1) Beijing-A

2) Beijing-B

3) Shanghai-A

4) Shanghai-B

 

我相信大部分的人会选择4)把,其实正确答案是2)。 Map 覆盖的时候KEY是不会被覆盖的,只会覆盖VALUE的值。

 

值得注意。

分享到:
评论
2 楼 ANN_MM 2014-03-19  
其他的都看懂了,除了重写hashcode那个方法
1 楼 wengeldouble 2014-02-24  
越是基础 越有玄机~~ 3Q3Q

相关推荐

    小程序仿摩拜单车(解决map层级过高问题)

    为了解决map层级过高导致的覆盖问题,我们可以采用以下策略: 1. **自定义组件封装**:创建一个自定义组件,将map组件和其他需要显示的组件(如按钮、信息提示等)进行封装。通过合理布局,使得这些组件可以与map...

    uni-app的map层级问题封装.zip

    首先,uni-app是一个基于Vue.js的多端开发框架,它允许开发者编写一次代码,然后发布到iOS、Android、Web(H5、微信小程序、支付宝小程序、百度小程序、QQ小程序、字节跳动小程序、快应用等多个平台。在uni-app中...

    amap_base_flutter,小部件。.zip

    《amap_base_flutter:构建地图基础的小部件库》 在移动应用开发中,尤其是在构建具有地理定位和导航功能的应用时,地图组件是不可或缺的一部分。amap_base_flutter是针对Flutter框架的一个开源项目,它为开发者...

    经典教材:MAP信令培训材料

    随着移动通信技术的发展,例如4G LTE和5G NR,MAP信令也面临如何适应更高带宽、更低延迟的需求,以及与新出现的技术如IMS(IP多媒体子系统)的融合问题。 通过深入学习《经典教材:MAP信令培训材料》,读者将能够...

    解决iframe中fixed失效的问题

    - 一种常见的技巧是将 `iframe` 的 `position` 设置为 `relative` 或 `absolute`,并将其 `z-index` 设置得很高,使 `fixed` 元素能够覆盖 `iframe` 的边界。 - 将 `iframe` 的 `scrolling` 属性设置为 `no`,然后...

    Map地图软件_地图_高德地图_C#高德地图_map_高德云图非法_

    5. **标注和覆盖物**:如果需要在地图上添加点、线、面等元素,可以使用`AMap.Marker`、`AMap.Polyline`、`AMap.Polygon`等类。创建对象后,使用`AMap.Map#addOverlay()`添加到地图上。 6. **路径规划**:高德地图...

    20150520map

    覆盖物允许开发者在地图上添加自定义的图标、标注、形状等元素。例如,在“20150520map”项目中,开发者可能创建了自定义的Marker(图标)来表示特定的地点,或者使用Polygon(多边形)或Polyline(折线)来表示区域...

    数据结构之map的使用方法等

    需要注意的是,这种方式在 `map` 中插入数据时会覆盖已有的键对应的值,而不是抛出异常或返回错误。这是因为 `map` 的 `operator[]` 实际上是在没有找到匹配键时创建一个新的键值对,并返回对应的引用,从而允许覆盖...

    原版MAP(移动应用部分)协议(EN)

    MAP协议是移动通信网络中的核心组件之一,它定义了不同网络元素之间如何交换与移动性管理、订阅者数据处理、呼叫建立等相关的信息。MAP协议基于SS7(Signalling System No. 7),是一个应用层协议,负责处理如位置...

    google map debug

    `images`目录可能存储了地图上的图标或其他视觉元素,而`mapfiles`可能包含额外的地图配置或数据。阅读这些文件的内容,可以帮助我们进一步了解项目的具体实现和可能的问题。 在调试过程中,不断测试和迭代,参考...

    echarts-all-map.rar

    在本压缩包中,这个文件可能会详细解释地图资源的使用方法、格式,以及可能遇到的问题和解决办法。阅读此文件对于正确使用地图资源至关重要。 “map”文件夹很可能包含了各种地图数据,这些数据可能以JSON或者其他...

    day04_Map 每日作业卷1

    Map接口在Java编程中扮演着重要的角色,它用于存储键值对的数据...这些练习覆盖了Map的基本操作,包括添加、删除、修改和遍历,以及利用Map解决实际问题。通过这些练习,可以深入理解Map接口及其在实际编程中的应用。

    地图自定义绘画覆盖物

    首先,自定义覆盖物是指在地图上添加具有特定形状、颜色或图标的个性化元素,以突出显示特定区域、标记兴趣点或者提供互动功能。在百度地图API和高德地图SDK中,都有相应的接口支持自定义覆盖物的创建。 对于百度...

    ConceptDraw_PRO_MINDMAP汉化

    3. **备份**:在覆盖原文件之前,最好先备份原有的DLL文件,以防汉化后出现问题,可以快速恢复到原始状态。 4. **语言设置**:安装汉化文件后,启动ConceptDraw PRO,进入软件设置,选择语言为中文,才能看到界面...

    c++-c++编程基础之leetcode题解第76题最小覆盖子串.zip

    第76题"最小覆盖子串"(Minimum Window Substring)是其中一道经典的字符串处理问题,它涉及到字符串查找、滑动窗口等算法概念。在这个题解压缩包中,你将找到关于如何使用C++解决这道题目的详细步骤和代码实现。 ...

    c++ map,mutimap删除问题分析

    然而,在处理这些容器时,尤其是进行元素删除操作时,需要特别注意,因为错误的删除方式可能导致内存问题,如内存覆盖和不可预知的运行时错误。本文将深入分析一个特定的删除问题,并提供正确的方法来解决这个问题。...

    23.(leaflet篇)leaflet叠加html(leaflet叠加div元素).zip

    Leaflet是一款轻量级的JavaScript库,专门用于创建交互式的地图。在本教程中,我们将深入探讨如何在Leaflet地图上叠加HTML元素,特别是div元素,...在学习过程中,如果遇到问题,可以参考提供的博客链接或向博主咨询。

    基于C++ map中key使用指针问题的详解

    在C++编程中,`std::map`是一个关联容器,它按照键(key)的排序存储元素,每个键值对应一个值(value)。这个容器的主要优势在于它的高效查找能力,通常使用红黑树实现,查找、插入和删除的时间复杂度为O(logN)。...

    js中查找最近的共有祖先元素的实现代码.docx

    - **元素的唯一标识**:由于JavaScript的`Map`或对象不能直接以DOM元素作为键,我们需要为每个元素添加一个唯一的标识。HTML5引入了"data-"属性,可以用来添加自定义数据,所以我们可以在元素上设置一个"data-find...

    离线地图_openstreetmap_postgresql_postgis_mapnik_osm2pgsql_osm数据——

    离线地图制作涉及多个关键技术,...总的来说,离线地图的制作涉及多个技术和工具的集成,通过这个过程,可以创建自定义的、具有详细地理信息的本地地图应用,特别适用于户外活动、旅行导航或者在无网络覆盖的地区使用。

Global site tag (gtag.js) - Google Analytics