package com.collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class Maptest {
/**
* 用来承装学生类型的对象的
*/
public Map<String,Student>students;
/**
* 在构造器中初始化students属性
* @param args
*/
public Maptest(){
this.students=new HashMap<String,Student>();
}
/**
* 测试添加:输入学生ID,判断是否被占用
* 若未被占用,则输入姓名,创建一个新的学生对象,并添加到students中去
* @param args
*/
public void testput(){
Scanner console=new Scanner(System.in);
int i=0;
while(i<3){
System.out.println("请输入学生ID:");
String ID=console.next();
//判断ID是否被占用
Student st=students.get(ID);
if(st==null){
System.out.println("请输入学生的姓名:");
String name=console.next();
//创建新的学生对象
Student newstudent=new Student(ID,name);
//通过调用students的put方法,添加ID——学生映射
students.put(ID,newstudent);
System.out.println("成功添加学生:"+students.get(ID).name);
i++;
}
else{
System.out.println("该学生ID被占用");
continue;
}
}
}
/**
* 测试Map的Keyst方法
* @param args
*/
public void testKeyset(){
//通过Keyset方法,返回Map中的所有键的Set集合
Set<String>keySet=students.keySet();
//取得students的容量
System.out.println("总共有"+students.size()+"个学生!");
//遍历keySet,取得每一个键,再调用get方法取得每一个键对应的Value
for (String stuID : keySet) {
Student stu=students.get(stuID);
if(stu!=null)
System.out.println("学生:"+stu.name);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Maptest sy=new Maptest();
sy.testput();
sy.testKeyset();
}
}
这里的有序和无序不是我们理解中的那样,而是在不同平台下运行输出的结果一样。例如如果是有序的那么无论在windows下还是linux下运行输出的结果都是一样的,同理无序。
多运行几次也是这样吗