//定义一个名为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);
}
}
Java中Map类的使用
最新推荐文章于 2024-08-02 18:42:00 发布