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
for(Iterator
{
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
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);
}
}
}