学习笔记21
集合框架2-Map集合
集合框架
1.Map集合概念:
Map<K,V>map集合是双列集合,存储“键”和“值”,键值一一对应,键是唯一的不可以重复,而值是可以重复的。
2.Map集合的遍历:
2.1 KeySet遍历Map集合
HashMap<String,String> hashMap=new HashMap<>();
hashMap.put("一","1");
hashMap.put("二","2");
hashMap.put("三","3");
hashMap.put("四","4");
- 2.1.1 增强for循环遍历Map集合
//遍历
Set keys = hashMap.keySet(); //键集
for (String key:keys) {
System.out.println(key+"--"+hashMap.get(key));
}
- 2.1.2 迭代器遍历Map集合
Iterator<String> it=keys.iterator();
while(it.hasNext()){
String key = it.next();
System.out.println(key+"-"+hashMap.get(key));
}
2.2 entrySet遍历Map集合
- 2.2.1 增强for循环遍历
Set<Map.Entry<String, String>> entries = hashMap.entrySet();
for (Map.Entry<String, String> en:entries) {
System.out.println(en.getKey()+" "+en.getValue());
// System.out.println(en);
}
- 2.2.2 迭代器遍历
Iterator<Map.Entry<String,String>> it=keysValues.iterator();
while(it.hasNext()){
Map.Entry<String, String> en = it.next();
System.out.println(en.getKey()+"-"+en.getValue());
//System.out.println(en);
}
3.集合嵌套
- 3.1 Map 嵌套Map
题目要求:有两个班级“Java”,“C++”,每个班级都有学生,添加学生信息,并遍历输出每个班级额学生信息。
HashMap<Integer,String>stu=new HashMap<>();
stu.put(1001,"张三");
stu.put(1002,"张d");
stu.put(1003,"张s");
//有两个班级,每个班级的学生一样。
HashMap<String,HashMap<Integer,String>>cla=new HashMap<>();
cla.put("Java",stu);
cla.put("C++",stu);
//遍历所有班级
for(String key:cla.keySet()){
// System.out.println(key);
System.out.println("班级:"+key);
//遍历每个班级的所有学生
for(Integer k:cla.get(key).keySet()){
System.out.println(k+"-"+cla.get(key).get(k));
}
}
- 3.2 Map 嵌套List
public class Student {
private int no;
private String name;
public Student(int no, String name) {
this.no = no;
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"no=" + no +
", name='" + name + '\'' +
'}';
}
}
public class Test {
public static void main(String[] args) {
ArrayList<Student>stu=new ArrayList<>();
stu.add(new Student(1001,"Jim"));
stu.add(new Student(1002,"Tom"));
stu.add(new Student(1003,"Jack"));
HashMap<String,ArrayList<Student>>hashMap=new HashMap<>();
hashMap.put("Java",stu);
hashMap.put("C++",stu);
//循环每个班级
for (String key:hashMap.keySet()) {
System.out.println(key+"班级学生:");
//循环遍历每个班级学生
for (Student s:hashMap.get(key)) {
System.out.println(s);
}
}
}