1>
设计一个学生信息管理系统管理学生的信息。刚开始设计时,使用数组来存放学生信息(学生信息包括name,school)。后来发现学生数量会发生动态变化,就于是开始使用Vector来存储学生信息。请模拟这样的一个设计过程,并输出所有学生信息。
建议步骤:
(1) 建立一个Student类,用于存取学生信息。
(2) 建立一个StudentArray类,使用数组存放所有的学生信息。StudentArray构造函数中添加4个学生信息,并且进行初始化。
(3) 建立一个StudentVector类,使用Vector存放所有的学生信息。在StudentVector中提供一个构造函数public StudentVector(StudentArray sa),用于把StudentArray中的学生信息用Vector进行存储。此外,在StudentVector中要提供addStudent、removeStudent、printAll方法用于增加、删除学生信息和打印所有学生信息。
(4) 建立一个StudentTest类,测试打印所有学生信息(学生人数可以不局限于4个学生)。
package Test7
public class Student {
private String name;
private String school;
//无参数构造方法
public Student() {
}
//构造方法
public Student(String name,String school) {
this.name=name;
this.school=school;
}
public void setName(String name) {
this.name=name;
}
public void setSchool(String school) {
this.school=school;
}
public String getName() {
return name;
}
public String getSchool() {
return school;
}
@Override
public String toString() {
String s="Name: "+name+" "+"School: "+school;
return s;
}
}
package Test7
public class StudentArray {
public Student[] student=new Student[4];
/*
* 构造函数
*/
public StudentArray() {
Student ss;
ss=new Student("李四","清华");
student[0]=ss;
ss=new Student("王五","北大");
student[1]=ss;
ss=new Student("想上天","北大");
student[2]=ss;
ss=new Student("带你飞","北大");
student[3]=ss;
}
/*
* 获取学生信息
*/
public Student[] getStudent() {
/*
* for(int i=0;i<student.length;i++)
* System.out.println(student[i]);
* 这个一开始写来在Test中测试StudentArray,能正常输出
*/
return student;
}
}
package Test7;
import java.util.*;
public class StudentVector {
Vector<Student> vecStudent;
/*
* 构造函数
*/
public StudentVector(StudentArray sa) {
Student[] studentArray=sa.getStudent();
vecStudent=new Vector<Student>(Arrays.asList(studentArray));
}
/*
* 增加学生信息 用vector的addElement(Object obj)
*/
public void addStudent(Student student) {
vecStudent.addElement(student);
}
/*
* 删除学生信息 用vector的removeElement(Object obj)
*/
public void removeStudent(Student student) {
vecStudent.removeElement(student);
}
/*
* 打印学生信息
*/
public void printAll() {
for(int i=0;i<vecStudent.size();i++) {
Student student=vecStudent.get(i);
System.out.println(student.toString());
}
}
}
package Test7
public class StudentTest {
public static void main(String[] args) {
Student s1=new Student();
s1.setName("法外狂徒张三");
s1.setSchool("北大");
//System.out.println(s1.toString());
//用来测试Student没错
Student s4=new Student();
s4.setName("赵六");
s4.setSchool("北大");
StudentArray s2=new StudentArray();
//s2.getStudent();
//用来测试StudentArray没错
/*
* 添加学生s1,s4,并打印所有学生信息
*/
System.out.println("添加学生");
StudentVector s3=new StudentVector(s2);
s3.addStudent(s1);
s3.addStudent(s4);
s3.printAll();
/*
* 删除s1,,并打印所有学生信息
*/
System.out.println("\n");
System.out.println("删除学生");
s3.removeStudent(s1);
s3.printAll();
}
}
2>
用key-value对来填充一个HashMap,并且按照Entry的Hash code 排列输出(也可以不排序直接输出即可)。
package Test7
import java.util.*;
import java.util.Map.Entry;
public class HashMapSort {
public static void main(String[] args) {
/*
* 初始化map,一个简单的关于几个学生学号的
* key=学生名字,value=学号
*/
Map<String, Integer> map=new HashMap<String, Integer>();
map.put("赵六",201801);
map.put("王五",201802);
map.put("李四",201803);
map.put("张三",201804);
List<Map.Entry<String, Integer>> List=new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
/*
* 不排序直接输出
*/
System.out.print("不排序直接输出:\n");
for(int i=0;i<List.size();i++) {
System.out.println(List.get(i));
}
System.out.print("\n");
/*
* 按value排序
* 使用Collections.sort()排序
*/
Collections.sort(List,new Comparator<Map.Entry<String, Integer>>(){
@Override
public int compare(Map.Entry<String, Integer> arg0, Entry<String, Integer> arg1) {
// 学号从小到大排序
return arg0.getValue().compareTo(arg1.getValue());
/*
* 学号从大到小排序
* return arg1.getValue().compareTo(arg0.getValue());
*/
}
});
System.out.print("学号从小到大排序(value按从小到大排):\n");
for(int i=0;i<List.size();i++) {
System.out.println(List.get(i).getKey()+":"+List.get(i).getValue());
}
System.out.print("\n");
/*
* 按key排序
* 先得到keySet,转换成数组,用Arrays.sort()排序:自动从小到大排序
*/
Set<String> set=map.keySet();
Object[] arr=set.toArray();
Arrays.sort(arr);
System.out.println("按key从小到大排序:");
for(Object key:arr) {
System.out.println(key+":"+map.get(key));
}
}
}