Map

Map集合

Map:
Hashtable:哈希表结构,同步的,不允许null键,null值
HashMap:哈希表结构,不同步,允许null键,null键
TreeMap:二叉树结构,不同步,可以对map集合中的键进行排序


1.添加
v put(key,value);//返回key所映射的上一个value,如果没有就返回null
2.删除
v remove(key);//返回删除的value
3.获取
v get(key);//返回value
4.返回

**Set keyset();//取出所有键并存储到set集合中
使用例子(遍历集合)
Set keySet = map.keySet();
for(Iterator IT = keySet.iterator();it.hasNext();)
{
String key = it.next();
String value = map.get(key);
System.out.println(key+”:”+value);
}
**Map集合没有迭代器**

**Set Entry();//取出所有键映射关系
*entry就是map接口中的一个内部接口,因为只有键值对以后,才有映射关系
使用举例:
Set<Map.Entry<String,String>> entrySet = map.entrySet();
for(Iterator<Map.Entry<String,String>> it = netrySet.iterator();it.hasNext();)
{
Map.Entry(String,String> me = it.next();
String key = me.getKey();
Stirng value = me.getValue();
System.out.println(key+value);
}
**values();//返回值
Collection values = map.values();


map集合被使用是因为具备映射关系

一对多关系

思想关键:value值可以是各种类型

举例:一个学校有多个教室,一个教室有多个学生
学校-教室-学生

源码如下

public class MapDemo {

public static void main(String[] args) {
    HashMap<String,HashMap<String, String>> school = new HashMap<String,HashMap<String, String>>();//学校
    HashMap<String, String> A = new HashMap<String, String>();//A班
    HashMap<String, String> B = new HashMap<String, String>();//B班
    //开始添加教室
    school.put("A", A);
    school.put("B", B);
    //开始添加学生
    A.put("1", "zhang");
    A.put("2", "wang");
    B.put("1", "li");
    B.put("2", "zhao");
    //开始输出学生信息
    Iterator<String> it = school.keySet().iterator();
    while(it.hasNext())
    {
        String room = it.next();
        HashMap<String, String> roomName = school.get(room); //获得room所对应的HashMap对象
        System.out.println(room+"班");
        getStudentInfo(roomName);
    }
}

public static void getStudentInfo(HashMap<String, String> room) //获取学生信息
{
    Set<String> S = room.keySet();
    for(Iterator<String> it = S.iterator();it.hasNext();)
    {
        String id = it.next();
        String name = room.get(id);
        System.out.println("id="+id+" "+"name="+name);
    }

}

}