真是信息爆炸,现在的学习笔记都不知道该写在哪个blog上了,日!
刚开完会,学习下Map接口吧。先看看AbstractMap吧,之所以JDK都是Map下面继承abstract class就是因为可以定义一些通用约定,比如equals的自反性,对称性....对于这些学术概念我头疼啊,吗的。先写一点吧,改天详细搞搞Map的具体实现类的一些方法,内部数据结构等,red-black,大学的时候就发现这些都是浮云啊!
public abstract class AbstractMap implements Map {
/**
* protected,哥喜欢(*@ο@*) 哇~
*/
protected AbstractMap() {
}
// override Object的equals
public boolean equals(Object o) {
if (o == this) return true;
if (!(o instanceof Map)) return false;
Map t = (Map) o; //上面的判断很重要,否则会抛ClassCastException的
if (t.size() != size()) return false;
//开始循环比较Entry中的数据了,我一般会主要想到这样的逻辑比较,前面的判断不错
try {
Iterator i = entrySet().iterator();
while (i.hasNext()) {
Entry e = (Entry) i.next();
Object key = e.getKey();
Object value = e.getValue();
if (value == null) {
if (!(t.get(key)==null && t.containsKey(key)))
return false;
} else {
if (!value.equals(t.get(key)))
return false;
}
}
} catch(ClassCastException unused) {
return false;
} catch(NullPointerException unused) {
return false;
}
return true;
}
}
}