Map接口
前情概要:
存放Set集合元素的容器,必须要重写hashCode( )和equals( )方法,这样才可以保证Set集合中的元素不会重复。
凡是跟集合这块,要你存的话,equals( )方法是一定要写的;如果是跟Map或Set相关的话,除了写equals( )方法外,还要写hashCode( )方法。
上图中实线表示继承;虚线表示实现。
一个ksy-value对就是一个entry;所有的entry是一个set。
一、Map常用的集合元素:
1、Map集合的实现定义与在Map集合中的添加、删除操作:
package com.atguigu.Map00;
import java.util.HashMap;
import java.util.Map;
/*
* Collection接口
*
* Map接口
* |------HashMap:Map的主要实现类
* |------LinkedHashMap:
* |------TreeMap:
* |------HashTable
* |------Properties
* */
import org.junit.Test;
/*
* HashMap:
* 1、key是用Set来存放的,不可重复。value是用Collection来存放的,可重复;
*一个key-value对,是一个Entry。所有的Entry是用Set存放的,也是不可重复的。
* 2、向HashMap中添加元素时,会调用key所在类的equals()方法,判断两个key是否相同。
* 若相同则只能添加进后添加的那个元素。
* */
public class TestMap {
@Test
public void testMap1() {
Map map=new HashMap(); //1、Object put(Object key,Object value):向Map中添加一个元素
// map.put(key, value);
map.put("AA", 213); //正是因为key是不可重复的所有Entry才不可重复。
map.put("BB", 456);
map.put("BB", 456);
map.put(123, "CC");
map.put(null, null);
map.put(new Person("DD",23), 89);//put的两个Person实体类对象添加成功一个,因为key值不能相等。
map.put(new Person("DD",23), 98);
System.out.println(map.size());//结果为:4(因为put()里添加了一个key值重复的,只能算一个。)
System.out.println(map);
/*
* 结果:
5
{AA=213, BB=456, null=null, 123=CC, com.atguigu.Map00.Person@14c8c=98}
*/
map.remove("AA");
System.out.println(map.size());
System.out.println(map);
// map.clear(); //clear:清空Map集合
System.out.println(map.get(123));//get:输出key值为123对应的value值;如果没有此key则返回null。
}
}
2、元视图操作的方法:
//遍历Map集合中的key值用”某某.keySet()”
//遍历Map集合中的value值用”某某.values()”
//遍历Map集合中的key-value对用”某某.entrySet()”
Map map=new HashMap();
//1、遍历key集(用".keySet"):输出的结果与添加进HashMap的顺序不同。
Set set=map.keySet();
for(Object obj:set) {
S