【java】java.util.Map接口学习

真是信息爆炸,现在的学习笔记都不知道该写在哪个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;
    }
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值