实验七对象群体的组织--Java

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));
  } 
}
}

猜你喜欢

转载自blog.csdn.net/weixin_45800653/article/details/107955595