#Map

 

和Collection一样,Map也是集合容器的一个顶层接口。Map是通过key-value方式存储数据,key值都是唯一的,但key是否能为空,则要看他的不同子类的实现。我们可以把Map看成一个小型的数字字典,通过key值的方式存储数据性能非常快,比如他的子类Hashmap,底层就是通过散列表来实现存储,他的时间复杂度是O(1)。另一个典型的子类Treemap是基于红黑树实现的,时间复杂度为O(log n)。以下将介绍部分方法。

methoddesc
size()获取容器中元素的个数
isEmpty()判断容器中是否保函元素,如果不包含元素,返回true
containsKey(Object key)判断是否保函key值
containsValue(Object value)判断是否保函Value
get(Object key)通过key值获取元素
put(K key, V value)将一个元素通过键值对的方式存入容器,如果以存在这个key,则会替换value。
remove(Object key)移除一个元素
putAll(Map<? extends K, ? extends V> m)将容器中所有元素拷贝到当前容器。
interface Entry<K,V>这个内部类其实也是一个顶层接口,所有存入容器的元素首先都会被包装成一个entry元素。Map的不同子类都会实现这个接口,而且实现各不相同。原因很简单,每个子类都有独特的数据结构来存储数据,TreeMap用的是红黑树,HashMap用的是散列表,而LinkedHashMap则是用散列表+双向链表实现的。下面是这三个类对Entry的部分实现代码:

######TreeMap:

***省略***
K key;
V value;
Entry<K,V> left = null;
Entry<K,V> right = null;
Entry<K,V> parent;
boolean color = BLACK;
***省略***

######HashMap:

***省略***
final int hash;
final K key;
V value;
Node<K,V> next;
***省略***

######LinkedHashMap

static class Entry<K,V> extends HashMap.Node<K,V> {
    Entry<K,V> before, after;
    Entry(int hash, K key, V value, Node<K,V> next) {
        super(hash, key, value, next);
    }
}

#AbstractMap AbstractMap这个类没特别的地方,他相当于一个骨架,对Map中的接口方法做了一个最简化的实现,设计他的目的是为了最小化接口实现的压力。

#SortedMap SortedMap是Map的子接口,他是一个排序接口,所有实现他的子类都事排序的,通常都是根据key进行排序。因此所有key值都必须实现Comparator接口。下面列举几个他特有的排序方法。

methoddesc
firstKey()获取第一个元素
lastKey()获取最后一个元素

转载于:https://www.cnblogs.com/hd-zg/p/6929894.html

可以将上述代码放在Vue组件的template和script标签中,如下所示: ``` <template> <div> <div id="container"></div> <div class="info"> <h4>获取地图级别与中心点坐标</h4> <p>当前级别:<span id="map-zoom">{{ zoom }}</span></p> <p>当前中心点:<span id="map-center">{{ center }}</span></p> </div> </div> </template> <script> import AMap from 'AMap'; import 'AMap/dist/AMap.css'; export default { mounted() { AMap.loadPlugin('AMap.Map', () => { const map = new AMap.Map('container', { zoom: 11, center: [121.498586, 31.239637], }); function logMapinfo() { const zoom = map.getZoom(); const center = map.getCenter(); this.zoom = zoom; this.center = center.toString(); } this.zoom = map.getZoom(); this.center = map.getCenter().toString(); map.on('moveend', logMapinfo.bind(this)); map.on('zoomend', logMapinfo.bind(this)); }); }, data() { return { zoom: '', center: '', }; }, }; </script> <style> html, body, #container { width: 100%; height: 100%; } #map-zoom, #map-center { color: #0288d1; } </style> ``` 在Vue组件中,首先通过import引入AMap,然后在mounted()方法中使用AMap.loadPlugin()加载地图插件。然后在回调函数中创建地图实例,并将其显示在页面中。接着定义一个函数logMapinfo()来获取地图的层级和中心点位置,并将其绑定到地图的移动和缩放事件上。同时,在Vue组件中定义了两个数据zoom和center,用来保存当前地图的层级和中心点位置,并将它们显示在页面上。注意,在logMapinfo()函数中,由于this指向了地图实例,需要使用bind()方法将this绑定到Vue实例上,以便在函数中访问到Vue组件的数据。最后,通过style标签设置页面样式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值