随笔2 AbstractMap<K,V>】的更多相关文章

上一篇写了Map接口的源码分析,这一篇写一下Map接口的一个实现类AbstractMap,从名字就可以看出这是一个抽象类,提供了Map接口的骨架实现,为我们实现Map接口的时候提供了很大的便利.在这里类中,还有一个抽象方法entrySet没有被实现,在实现的方法中put方法也仅仅抛出了一个异常.我们在继承这个类写自己的Map时,如果是一个不支持赋值的Map,那么只需要实现entrySet方法.如果是实现一个可以添加键值对的Map,那么不仅要实现entrySet方法,还需要在entrySet返回的…
equals.hashcode和==的区别 在介绍HashMap之前,我想先阐述一下我对这三者的理解,equals这个方法呢,就是在判断是否为同一对象(注意,这里的同一对象和相同的内存地址是不同的),是否为同一对象其实看一看做一种我们对事物的主观定义,如果我是个佛系青年,认为世间万物都是相同的,那么我只需要在equals里只return一个true.hashcode我们可以看做是一个对象的表示符,同一对象的表示符肯定是一样的,不同对象的表示符理论上来说应该是不同的,但是现实永远不太尽如人意,不同…
本来说是想介绍一下Hashtable的,但是发现HashMap和Hashtable最开始的不同就是在于HashMap继承了AbstractMap,而Hashtable继承了Dictionary<K,V>,所以决定先介绍一下Dictionary<K,V>. 首先承认Dictionary<K,V>是一个非常古老的抽象类了,并且很久都没有做过更新了.而且基于它产生了Hashtable也在之后被ConcurrentHashMap这个线程安全的Map代替了.写到这里我真的是有点不…
HashMap类 https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable 子类:LinkedHashMap,PrinterStateReasons 一.介绍 HashMap继承了AbstractMap类,Ab…
第一次写笔记就从map开始吧,如上图所示,绿色的是interface,黄色的是abstract class,蓝色的是class,可以看出所有和图相关的接口,抽象类和类的起源都是interface map<K,V>.现在看一下当前Map接口中实现了什么,里面包含了一个内部接口interface Entry<K,V>,声明了14个方法,同时还定义了11个方法(在jdk1.8中,在interface中可以使用default关键字来定义完整的方法) 由于声明的方法都是原来版本jdk已经存在…
java:警告:[unchecked] 对作为普通类型 java.util.HashMap 的成员的put(K,V) 的调用未经检查 一.问题:学习HashMap时候,我做了这样一个程序: import java.util.HashMap;public class testHashMap{ public static void main(String[] args){    HashMap hm = new HashMap();    hm.put("txtSearchProvince"…
一.HashMap概述 HashMap基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同.)此类不保证映射的顺序,特别是它不保证该顺序恒久不变. 值得注意的是HashMap不是线程安全的,如果想要线程安全的HashMap,可以通过Collections类的静态方法synchronizedMap获得线程安全的HashMap. Map map = Coll…
? 表示不确定的java类型. T  表示java类型. K V 分别代表java键值中的Key Value. E 代表Element. Object跟这些东西代表的java类型有啥区别呢? Object是所有类的根类,是具体的一个类,使用的时候可能是需要类型强制转换的,但是用T ?等这些的话,在实际用之前类型就已经确定了,不需要强制转换. http://blog.csdn.net/explorers/article/details/454837…
Array: 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. 但是数组存在一些不足的地方.在数组的两个数据间插入数据是很麻烦的,而且在声明数组的时候必须指定数组的长度,数组的长度过长,会造成内存浪费,过段会造成数据溢出的错误.如果在声明数组时我们不清楚数组的长度,就会变得很麻烦. 针对数组的这些缺点,C#中最先提供了ArrayList对象来克服这些缺点. ArrayList: ArrayList是命名空间System.Collections下的…
1.ArrayList ArrayList list = new ArrayList(); //for遍历 ; i < list.Count; i++) { SE se=(SE)list[i]; Console.WriteLine(se.Name); } //foreach遍历 foreach(Object obj in list) { SE se=(SE)list[i]; Console.WriteLine(se.Name); } 2.Hashtable Hashtable list=new…