那天无意间看到一个博客,写到关于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的值。
值得注意。
相关推荐
为了解决map层级过高导致的覆盖问题,我们可以采用以下策略: 1. **自定义组件封装**:创建一个自定义组件,将map组件和其他需要显示的组件(如按钮、信息提示等)进行封装。通过合理布局,使得这些组件可以与map...
首先,uni-app是一个基于Vue.js的多端开发框架,它允许开发者编写一次代码,然后发布到iOS、Android、Web(H5、微信小程序、支付宝小程序、百度小程序、QQ小程序、字节跳动小程序、快应用等多个平台。在uni-app中...
《amap_base_flutter:构建地图基础的小部件库》 在移动应用开发中,尤其是在构建具有地理定位和导航功能的应用时,地图组件是不可或缺的一部分。amap_base_flutter是针对Flutter框架的一个开源项目,它为开发者...
随着移动通信技术的发展,例如4G LTE和5G NR,MAP信令也面临如何适应更高带宽、更低延迟的需求,以及与新出现的技术如IMS(IP多媒体子系统)的融合问题。 通过深入学习《经典教材:MAP信令培训材料》,读者将能够...
- 一种常见的技巧是将 `iframe` 的 `position` 设置为 `relative` 或 `absolute`,并将其 `z-index` 设置得很高,使 `fixed` 元素能够覆盖 `iframe` 的边界。 - 将 `iframe` 的 `scrolling` 属性设置为 `no`,然后...
5. **标注和覆盖物**:如果需要在地图上添加点、线、面等元素,可以使用`AMap.Marker`、`AMap.Polyline`、`AMap.Polygon`等类。创建对象后,使用`AMap.Map#addOverlay()`添加到地图上。 6. **路径规划**:高德地图...
覆盖物允许开发者在地图上添加自定义的图标、标注、形状等元素。例如,在“20150520map”项目中,开发者可能创建了自定义的Marker(图标)来表示特定的地点,或者使用Polygon(多边形)或Polyline(折线)来表示区域...
需要注意的是,这种方式在 `map` 中插入数据时会覆盖已有的键对应的值,而不是抛出异常或返回错误。这是因为 `map` 的 `operator[]` 实际上是在没有找到匹配键时创建一个新的键值对,并返回对应的引用,从而允许覆盖...
MAP协议是移动通信网络中的核心组件之一,它定义了不同网络元素之间如何交换与移动性管理、订阅者数据处理、呼叫建立等相关的信息。MAP协议基于SS7(Signalling System No. 7),是一个应用层协议,负责处理如位置...
`images`目录可能存储了地图上的图标或其他视觉元素,而`mapfiles`可能包含额外的地图配置或数据。阅读这些文件的内容,可以帮助我们进一步了解项目的具体实现和可能的问题。 在调试过程中,不断测试和迭代,参考...
在本压缩包中,这个文件可能会详细解释地图资源的使用方法、格式,以及可能遇到的问题和解决办法。阅读此文件对于正确使用地图资源至关重要。 “map”文件夹很可能包含了各种地图数据,这些数据可能以JSON或者其他...
Map接口在Java编程中扮演着重要的角色,它用于存储键值对的数据...这些练习覆盖了Map的基本操作,包括添加、删除、修改和遍历,以及利用Map解决实际问题。通过这些练习,可以深入理解Map接口及其在实际编程中的应用。
首先,自定义覆盖物是指在地图上添加具有特定形状、颜色或图标的个性化元素,以突出显示特定区域、标记兴趣点或者提供互动功能。在百度地图API和高德地图SDK中,都有相应的接口支持自定义覆盖物的创建。 对于百度...
3. **备份**:在覆盖原文件之前,最好先备份原有的DLL文件,以防汉化后出现问题,可以快速恢复到原始状态。 4. **语言设置**:安装汉化文件后,启动ConceptDraw PRO,进入软件设置,选择语言为中文,才能看到界面...
第76题"最小覆盖子串"(Minimum Window Substring)是其中一道经典的字符串处理问题,它涉及到字符串查找、滑动窗口等算法概念。在这个题解压缩包中,你将找到关于如何使用C++解决这道题目的详细步骤和代码实现。 ...
然而,在处理这些容器时,尤其是进行元素删除操作时,需要特别注意,因为错误的删除方式可能导致内存问题,如内存覆盖和不可预知的运行时错误。本文将深入分析一个特定的删除问题,并提供正确的方法来解决这个问题。...
Leaflet是一款轻量级的JavaScript库,专门用于创建交互式的地图。在本教程中,我们将深入探讨如何在Leaflet地图上叠加HTML元素,特别是div元素,...在学习过程中,如果遇到问题,可以参考提供的博客链接或向博主咨询。
在C++编程中,`std::map`是一个关联容器,它按照键(key)的排序存储元素,每个键值对应一个值(value)。这个容器的主要优势在于它的高效查找能力,通常使用红黑树实现,查找、插入和删除的时间复杂度为O(logN)。...
- **元素的唯一标识**:由于JavaScript的`Map`或对象不能直接以DOM元素作为键,我们需要为每个元素添加一个唯一的标识。HTML5引入了"data-"属性,可以用来添加自定义数据,所以我们可以在元素上设置一个"data-find...
离线地图制作涉及多个关键技术,...总的来说,离线地图的制作涉及多个技术和工具的集成,通过这个过程,可以创建自定义的、具有详细地理信息的本地地图应用,特别适用于户外活动、旅行导航或者在无网络覆盖的地区使用。