package Day18;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/*
* 班級
* 1班
* 學生1name,age
* 2班
* 學生2name,age
* */
public class Class2 {
private static Entry<String, Map> entry;
public static void main(String[] args) {
Map<Integer,Student1> map1=new HashMap();
map1.put(1,new Student1("小石",32));
map1.put(2,new Student1("hahh",44));
Map<Integer,Student1> map2=new HashMap();
map2.put(1,new Student1("哈哈",22));
map2.put(2,new Student1("額額",14));
//創建大Map集合,保存map1,map2
Map<String,Map> map=new HashMap();//大map
map.put("1班", map1);
map.put("2班",map2);
//keySet1(map);
//keySetfor(map);
//entrySet1(map);
//entrySet方法的增強for
for(Map.Entry<String, Map> entry:map.entrySet()) {
//獲取大Map的值,就是小Map
Map<Integer,Student1> m=entry.getValue();
//打印班級
System.out.println(entry.getKey());
for(Map.Entry<Integer, Student1> entry1:m.entrySet()) {
System.out.println(entry1.getKey());
System.out.println(entry1.getValue().getName());
System.out.println(entry1.getValue().getAge());
}
}
}
private static void entrySet1(Map<String, Map> map) {
//entrySet()方法
Set<Map.Entry<String,Map>> s=map.entrySet();
//獲取大Map的迭代器
Iterator<Map.Entry<String, Map>>i=s.iterator();
while(i.hasNext()) {
//獲取大map鍵和值的關係
Map.Entry<String,Map> m=i.next();
//輸出大Map的鍵
System.out.println(m.getKey());
//獲取大Map的值,也就是小Map
Map<Integer,Student1> map_x=m.getValue();
Set<Map.Entry<Integer, Student1>> s1=map_x.entrySet();
Iterator<Map.Entry<Integer, Student1>> it1=s1.iterator();
while(it1.hasNext()) {
Map.Entry<Integer, Student1> m1=it1.next();
System.out.println(m1.getKey());
System.out.println(m1.getValue().getName());
System.out.println(m1.getValue().getAge());
}
}
}
private static void keySetfor(Map<String, Map> map) {
//keyset的增強for循環
for (String key : map.keySet()) {
//打印班級
System.out.println(key);
Map<Integer,Student1> map_x=map.get(key);
for (Integer key1 : map_x.keySet()) {
//打印學生
System.out.println(map_x.get(key1).getName());
System.out.println(map_x.get(key1).getAge());
}
}
}
private static void keySet1(Map<String, Map> map) {
//使用keySet()方法
Set<String> s=map.keySet();
//獲取迭代器
Iterator<String> it=s.iterator();
while(it.hasNext()) {
//獲取大Map所有的鍵
String str=it.next();
//打印班級
System.out.println(str);
//通過大Map鍵找到值(值就是小Map)
Map<Integer,Student1> map_x=map.get(str);
//獲取小map的鍵
Set<Integer> s1=map_x.keySet();
//迭代器
Iterator<Integer> it1=s1.iterator();
while(it1.hasNext()) {
Integer in=it1.next();
System.out.println(map_x.get(in).getName());
System.out.println(map_x.get(in).getAge());
}
}
}
}
Student1.java
package Day18;
public class Student1 {
private String name;
private int age;
public Student1() {
super();
// TODO Auto-generated constructor stub
}
public Student1(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student1 other = (Student1) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
@Override
public String toString() {
return "Student1 [name=" + name + ", age=" + age + "]";
}
}
結果: