在java集合的应用中map中的键值对只能一对一,怎么样让一个相同的键对应于多个值呢?
可以通过list 而实现就是先把值存放在list中,然后把list放在map中就可以实现例如:
package studenttable;
public class Student {
private int num;//学号
private String name;//姓名
private int age;//年龄
private float grade;//分数
public Student(){}
public Student(int num,String name,int age,float grade){
this.num=num;
this.name=name;
this.age=age;
this.grade=grade;
}
public int getNum() {
return num;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public float getGrade() {
return grade;
}
}
package studenttable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Set;
public class StudentInformation {
public static void main(String[] args) {
//把value放在list中然后把list放在map即可
LinkedHashMap<String, Object> map =new LinkedHashMap<String, Object>();
ArrayList<Student> array1=new ArrayList<Student>();
ArrayList<Student> array2=new ArrayList<Student>();
ArrayList<Student> array3=new ArrayList<Student>();
array1.add(new Student(1,"张三1",18,90));
array1.add(new Student(2,"张三2",19,60));
array1.add(new Student(3,"张三3",23,80));
array1.add(new Student(4,"张三4",18,70));
map.put("java一班",array1);
array2.add(new Student(1,"王五1",20,50));
array2.add(new Student(2,"王五2",18,60));
array2.add(new Student(3,"王五3",18,20));
map.put("java二班",array2);
array3.add(new Student(1,"李四1",18,90));
array3.add(new Student(2,"李四2",18,90));
array3.add(new Student(3,"李四3",18,90));
map.put("java三班",array3);
Set set=map.keySet();
Iterator iter=set.iterator();
while(iter.hasNext()){
Object key=iter.next();
//list 的迭代
List list=(List) map.get(key);
Iterator iter2=list.iterator();
System.out.println(key);
while(iter2.hasNext()){
Student s=(Student)iter2.next();
System.out.println(s.getNum()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getGrade());
}
}
}
}
截图如下: