容器--Map概述

之前讲过了Collection类下的两个主要容器:List和Set,今天我们来讲讲没有继承自Collection的容器:Map。

Map提供了一个更通用的元素存储方法,Map提供了一个键值对的存储方式,一个键映射到一个值。、

Map中的常用方法

返回类型方法名(参数类型)
voidclear()

从该地图中删除所有的映射(可选操作)。

booleancontainsKey(Object key)

如果此映射包含指定键的映射,则返回 true 。

Set<Map.Entry<K,V>>entrySet()

返回此地图中包含的映射的Set视图。

booleanequals(Object o)

将指定的对象与此映射进行比较以获得相等性

inthashCode()

返回此地图的哈希码值。

booleanisEmpty()

如果此地图不包含键值映射,则返回 true 。

Set<K>keySet()

返回此地图中包含的键的Set视图。

Vput(K key, V value)

将指定的值与该映射中的指定键相关联(可选操作)。

voidputAll(Map<? extends K,? extends V> m)

将指定地图的所有映射复制到此映射(可选操作)。

Vremove(Object key)

如果存在(从可选的操作),从该地图中删除一个键的映射。

intsize()

返回此地图中键值映射的数量。

default Vreplace(K key, V value)

只有当目标映射到某个值时,才能替换指定键的条目。

default booleanreplace(K key, V oldValue, V newValue)

仅当当前映射到指定的值时,才能替换指定键的条目。

Map中的常用类

我们来看看Map的结构图

可以看出主要有三个实现类

  1. HashMap
  2. TreeMap
  3. WeakHashMap
  4. HashTable

HashMap

HashMap是最常用的Map,根据键的Hash值来存储数据,具有很快的访问速度。HashMap允许key、value为null,HashMap是非同步的。

TreeMap

TreeMap的特点就是其值是有序的,默认按升序排序,也可以指定比较器。TreeMap不允许key为null。TreeMap是非同步的。

WeakHashMap

WeakHashMap与HashMap基本一样,区别在于其键的引用类型。WeakHashMap的键是弱引用(WeakReference)类型,采用弱引用类型的好处是方便GC(垃圾回收器)进行垃圾回收,即方便内存的释放。

HashTable

与HashMap类似,但是HashTable不允许key和value的值为null,HashTable是线程同步的。

ConcurrentHashMap

在这里要特别提一下ConcurrentHashMap。HashMap是非同步的,虽然HashTable能解决HashMap的非同步问题,但是HashTable采用的是使用synchronized关键字进行线程同步,这样做的效率很低。ConcurrentHashMap就是为了解决线程同步但效率不高的问题。ConcurrentHashMap采用了分段锁的机制,后续我们会对这个分段锁详细介绍。

### Vue-Baidu-Map 实现路书功能 为了实现基于 `vue-baidu-map` 的路书功能,可以按照如下方法构建应用。此方案综合了多个方面的配置来展示如何创建一条带有起点、终点以及中途若干个途经点的道路规划。 #### 1. 安装依赖库 通过 npm 或者 script 标签引入必要的包: ```bash npm install vue-baidu-map --save ``` 或者直接在 HTML 文件中加入脚本标签[^1]: ```html <script src="https://unpkg.com/vue-baidu-map"></script> ``` #### 2. 创建地图实例并初始化 确保页面加载完成后立即执行地图组件的渲染逻辑,并设定好初始中心坐标与缩放级别。这一步骤通常是在 Vue 组件内的 mounted 生命周期钩子函数里完成。 ```javascript mounted() { this.$nextTick(() => { this.map = new BMap.Map('container'); // 替换 'container' 为实际的地图容器 ID let point = new BMap.Point(116.404, 39.915); this.map.centerAndZoom(point, 15); }); } ``` #### 3. 添加路线绘制工具 利用百度地图 API 提供的方向服务类 (`BMAP_NAVIGATION_CONTROL_LARGE`) 来帮助用户输入起始地点和目的地,从而自动生成最优行驶路径。对于更复杂的场景,则可以通过编程方式调用驾车导航接口获取具体路段信息。 ```javascript const driving = new BMap.DrivingRoute(this.map, { renderOptions: { map: this.map }, }); driving.search(startPoint, endPoint); // startPoint 和 endPoint 应该是指向地理坐标的对象 ``` #### 4. 配置个性化样式 针对每一段路程添加特定样式的折线或弧形连接符,比如箭头指示方向等效果。这部分涉及到对 polyline 属性的具体调整[^2]。 ```javascript state.mapArgument.iconsArr = [{ symbol:{ path: BMap_Symbol_SHAPE_BACKWARD_OPEN_ARROW, opts: { fillColor: '#FF0000', fillOpacity: 1, scale: 0.8, rotation: 90, strokeColor: '#FF0000', strokeWeight: 2, strokeOpacity: 0 } }, offset:'20%', repeat:'interval' }]; ``` #### 5. 显示沿途兴趣点标记 如果希望沿线路线上标注一些重要的地标建筑或其他关注区域,在计算出各段行程之后可依次遍历这些位置并将它们作为 marker 插入到地图之上。记得处理好静态资源路径问题以确保存储于项目内部的图片能够正常显示[^3]。 ```javascript markers.forEach(markerInfo => { var myIcon = new BMap.Icon('/static/path/to/icon.png', new BMap.Size(...)); var marker = new BMap.Marker(new BMap.Point(lat, lng), {icon:myIcon}); this.map.addOverlay(marker); }); ``` 以上就是使用 `vue-baidu-map` 构建基本路书应用程序的主要步骤概述。当然,根据业务需求的不同还可以进一步扩展更多特性,如支持多条备选路线的选择、实时交通状况更新等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值