共同学习Java源代码-数据结构-AbstractMap抽象类(一)
来源:互联网 发布:java实现base64解码 编辑:程序博客网 时间:2024/06/05 07:08
public abstract class AbstractMap<K,V> implements Map<K,V>
这个抽象类实现了Map接口。
protected AbstractMap() {
}
无参数构造方法。
public int size() {
return entrySet().size();
}
public abstract Set<Entry<K,V>> entrySet();
这个是size方法返回map的长度,调用的是下面的entrySet抽象方法返回键集合的长度。
public boolean isEmpty() {
return size() == 0;
}
这个方法是判断集合是否为空的方法,返回的是size方法是否为零的判断。
public boolean containsValue(Object value) {
Iterator<Entry<K,V>> i = entrySet().iterator();
if (value==null) {
while (i.hasNext()) {
Entry<K,V> e = i.next();
if (e.getValue()==null)
return true;
}
} else {
while (i.hasNext()) {
Entry<K,V> e = i.next();
if (value.equals(e.getValue()))
return true;
}
}
return false;
}
这个方法是判断map中是否包含值的方法。
首先获取键的迭代器。
然后判断如果参数为空的话,就用迭代器迭代键值对集合,然后判断值是否为空如果有空值,就返回true。
如果参数不为空,仍然用迭代器迭代键值对集合,然后判断值是否和参数equals,如果有就返回true。
如果循环结束后,方法仍未返回,就返回false。
public boolean containsKey(Object key) {
Iterator<Map.Entry<K,V>> i = entrySet().iterator();
if (key==null) {
while (i.hasNext()) {
Entry<K,V> e = i.next();
if (e.getKey()==null)
return true;
}
} else {
while (i.hasNext()) {
Entry<K,V> e = i.next();
if (key.equals(e.getKey()))
return true;
}
}
return false;
}
这个方法是判断map具备某个键的方法。
和上面的类似,就是遍历的时候是判断的是键。
public V get(Object key) {
Iterator<Entry<K,V>> i = entrySet().iterator();
if (key==null) {
while (i.hasNext()) {
Entry<K,V> e = i.next();
if (e.getKey()==null)
return e.getValue();
}
} else {
while (i.hasNext()) {
Entry<K,V> e = i.next();
if (key.equals(e.getKey()))
return e.getValue();
}
}
return null;
}
这个是get方法,根据键获取值的方法。
和上面很类似,先获取键值对迭代器,然后判断参数是否为空,如果为空,就遍历获取各个键值对,判断哪个键为空就返回该空键对应的值。
如果参数不为空,就遍历获取各个键值对,判断哪个键和参数equals,然后获取该键对应的值。
如果遍历玩仍然没有返回值,就返回空。
public V put(K key, V value) {
throw new UnsupportedOperationException();
}
这个是put方法,这个类没有实现,留给子类实现。
- 共同学习Java源代码-数据结构-AbstractMap抽象类(一)
- 共同学习Java源代码-数据结构-AbstractMap抽象类(二)
- 共同学习Java源代码-数据结构-AbstractMap抽象类(三)
- 共同学习Java源代码-数据结构-AbstractMap抽象类(四)
- 共同学习Java源代码-数据结构-AbstractMap抽象类(五)
- 共同学习Java源代码--数据结构--AbstractCollection抽象类(一)
- 共同学习Java源代码--数据结构--AbstractList抽象类(一)
- 共同学习Java源代码--数据结构--AbstractCollection抽象类(二)
- 共同学习Java源代码--数据结构--AbstractList抽象类(二)
- 共同学习Java源代码--数据结构--AbstractList抽象类(三)
- 共同学习Java源代码--数据结构--AbstractList抽象类(四)
- 共同学习Java源代码--数据结构--AbstractList抽象类(五)
- 共同学习Java源代码--数据结构--AbstractList抽象类(六)
- 共同学习Java源代码--数据结构--AbstractSet抽象类
- 共同学习Java源代码-数据结构-TreeSet(一)
- 共同学习Java源代码-数据结构-HashMap(一)
- 共同学习Java源代码-数据结构-LinkedHashMap(一)
- 共同学习Java源代码--数据结构--ArrayList类(一)
- P1002 过河卒
- Robotframework 入门教程(八)
- OpenGL学习总结(六)
- DEVONthink Pro Office 2.9.10 for Mac 简体 中文版 自适应简/繁中文系统
- 一起学 Java(四) File、Try 、序列化、MySQL、Socke
- 共同学习Java源代码-数据结构-AbstractMap抽象类(一)
- PAT1009. 说反话 (20)
- BurpSuite系列(五)----Intruder模块(暴力破解)
- 洛谷P1057 传球游戏
- 实验吧 因缺思汀的绕过 By Assassin(with rollup统计)
- Javascript:原型编程思想带来的2个好处
- Windows7下安装Caffe(GPU):另一个失败版本
- Codevs2038 线段树练习3(分块)
- 不要怂,就是GAN (生成式对抗网络) (四):训练和测试 GAN