Java中Map类的使用

//定义一个名为aa的类 重写了该类的equals的方法,只要实例变量count的值相等就返回true
 class aa
{
    int count;
    public aa(int count)
    {
        this.count = count;
    }

    public boolean equals(Object obj)
    {
        if (this == obj)
        {
            return true;
        }
        if (obj != null && obj.getClass() == aa.class)
        {
            aa a = (aa) obj;
            return this.count == a.count;
        }
        return false;
    }

    public int hashCode()
    {
        return this.count;              //在Set中比较集合中的两个元素是否相同的比价的是看equals个hashCode两个是否都相等
    }
}

//定义一个名为bb的类 重写了该类的equals的方法,无论什么情况都返回true
class bb
{
    public boolean equals(Object obj){
        return true;
    }
}


public class MapTest {
    public static void main(String[] args) {

//以下是map对象的基本操作
        Map map = new HashMap();
        map.put(1001, "java");  //放入map对
        map.put(1002, "php");
        map.put(1003, "html5");
        map.put(1004, "php");   //多次放入的map对在value的值可以重复

        //在添加的map对中,如果key已经存的情况下,put()函数会返回value的值
        System.out.println(map.put(1002,"PYTHON"));

        System.out.println(map);       //{1001=java, 1002=PYTHON, 1003=html5, 1004=php}

        System.out.println(map.containsKey(1001));      //判断是否包含所查找的Key  得到TRUE

        System.out.println(map.containsValue("php"));   //判断是否包含所查找的Value 得到TRUE

        for (Object key : map.keySet())
        {
            System.out.println(key + "-->" +map.get(key));
            /*结果
            1001-->java
            1002-->PYTHON
            1003-->html5
            1004-->php
            * */
        }
        map.remove(1002);       //根据key的值来删除相对应的map对
        System.out.println(map);        //{1001=java, 1003=html5, 1004=php}

//以下是测试equals判断key是否相等的方法
        Hashtable ht = new Hashtable();
        ht.put(new aa(1001), "java");
        ht.put(new aa(1002),"php");
        ht.put(new aa(1003), new bb());
        System.out.println(ht);     //{guodong.aa@70dea4e=guodong.bb@5c647e05, guodong.aa@4e25154f=php, guodong.aa@7852e922=java}
        System.out.println(ht.containsValue("hhhhh"));          //true 因为在那类b中对equals的方法重写了 无论传递什么对象,结果总是返回TRUE
        System.out.println(ht.containsKey(new aa(1001)));
        ht.remove(new aa(1001));
        System.out.println(ht);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值