- HashMap底层不是基于ArrayList实现的,而是基于HashCode值计算的,
- 基于ArrayList 查询效率非常低,时间复杂度O(n)
- 虽然可以保证存放 键值对 的有序性 但是并不可取
示例代码
package com.collection.Demo10;
import java.util.ArrayList;
/**
* 基于ArrayList手写HashMap集合
* 手写简易版本的HashMap,不推荐这样使用,效率非常低
*/
public class MayiktArrayListHashMap<K, V> {
//创建一个容器存放 Entry对象 存放键值对
private ArrayList<Entry<K, V>> arrayListEntry = new ArrayList<>();
/**
* 基于ArrayList的HashMap集合 优缺点
* 缺点:查找效率太低了
* 优点:可以保证存放 键值对 是有序的 不是散列的
* 但是 不能够追求它的有序性,所以HashMap底层不是基于ArrayList实现的
* 而是 基于 HashCode实现的
*/
class Entry<K, V> {
K k;
V v;
public Entry(K k, V v) {
this.k = k;
this.v = v;
}
}
public void put(K k, V v) {
arrayListEntry.add(new Entry<>(k, v));
}
/**
* 如果基于ArrayList实现HashMap
* 查找时间复杂度 就是为O(n)
*/
public V get(K k) {
for (Entry<K, V> entry : arrayListEntry) {
if (entry.k.equals(k)) {
return entry.v;
}
}
return null;
}
public static void main(String[] args) {
MayiktArrayListHashMap mayiktArrayListHashMap = new MayiktArrayListHashMap();
mayiktArrayListHashMap.put("mayikt", "meite");
System.out.println(mayiktArrayListHashMap.get("mayikt"));
}
}
下一篇文章: