一个学生类
学生的属性有:学生学号,姓名,高数成绩,计算机成绩(java成绩),专业,性别。
package com.stu.test;
/**
*
* @author Feng 2018年1月27日上午10:21:49
*/
public class Student {
private String studentNumber;// 学生学号
private String studentName;// 学生姓名
private double mathScores;// 高数成绩
private double javaScores;// 计算机成绩
private String subject;// 专业
private String sex;// 性别
public Student(String studentNumber, String studentName, double MathScores, double javaScores, String subject,
String sex) {
super();
this.studentNumber = studentNumber;
this.studentName = studentName;
this.mathScores = MathScores;
this.javaScores = javaScores;
this.subject = subject;
this.sex = sex;
}
public Student() {
// 无参构造
}
public String getStudentNumber() {
return studentNumber;
}
public void setStudentNumber(String studentNumber) {
this.studentNumber = studentNumber;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public double getScores() {
return mathScores;
}
public void setScores(double scores) {
this.mathScores = scores;
}
@Override
public String toString() {
return studentNumber + "\t" + studentName + "\t" + subject + "\t" + sex + "\t" + mathScores + "\t\t"
+ javaScores;
}
public double getComputerScores() {
return javaScores;
}
public void setComputerScores(double computerScores) {
this.javaScores = computerScores;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
比较器用来比较成绩的平均分
package com.stu.test;
import java.util.Comparator;
public class ComparatorScore implements Comparator<Student> {
public int compare(Student stu1, Student stu2) {
// TODO Auto-generated method stub
return (int) ((stu1.getScores() +stu1.getComputerScores() )/2 - (stu2.getScores() + stu2.getComputerScores())/2);
}
}
学生管理类
这里就不写测试类了,直接把main方法也放到了学生管理类中了。
package com.stu.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class StudentManager {
private static List<Student> list = new ArrayList<Student>();
private StudentManager() {
list.add(new Student("15060205102", "冯劲松", 59.9, 50.2, "软件", "男"));
list.add(new Student("15060205101", "程尚明", 60.1, 60, "软件", "男"));
list.add(new Student("15060205124", "刘璐", 89.5, 78, "软件", "女"));
list.add(new Student("15060205103", "冯乐", 70.3, 65, "软件", "男"));
list.add(new Student("15060205104", "胡越", 10.1, 40, "软件", "男"));
list.add(new Student("15060205105", "黄人", 65, 30, "软件", "男"));
list.add(new Student("15060205107", "李鹏骁", 80.1, 72, "软件", "男"));
}
/**
* @return 学生信息
*/
public List<Student> getAll() {
return list;
}
/**
* 添加学生 添加失败就返回false,成功就返回true
*/
public boolean addStudent(Student student) {
for (int i = 0; i < list.size(); i++) {
Student studentAdd = list.get(i);
if (studentAdd.getStudentNumber().equals(student.getStudentNumber())) {
return false;
}
}
list.add(student);
return true;
}
/**
* 删除学生。
*/
public boolean removeStudent(String studentNumber) {
for (int i = 0; i < list.size(); i++) {
Student studentDel = list.get(i);
if (studentDel.getStudentNumber().equals(studentNumber)) {
list.remove(i);
return true;
}
}
return false;
}
/**
* main 方法入口
*
* @param args
*/
public static void main(String[] args) {
ComparatorScore cs = new ComparatorScore();
StudentManager manager = new StudentManager();
@SuppressWarnings("resource")
Scanner input = new Scanner(System.in);
boolean isGoing = true;
String name = null;// 临时输入的名字
String stuNumber = null;// 临时学号
String study = null;// 临时输入的学科
String sexual = null;// 性别
double math = 0;
double java = 0;
while (isGoing) {
int choose = 0;
do {
System.out.println("------Welcome to 学生管理系统-------");
System.out.println("========选择界面========");
System.out.println("\t1\t查看所有学生--------");
System.out.println("\t2\t添加一个学生--------");
System.out.println("\t3\t删除一个学生--------");
System.out.println("\t4\t退出本系统----");
System.out.println("----------------------------------");
System.out.println();
System.out.println("请输入你的选择:");
if (input.hasNext()) {
choose = input.nextInt();
}
input.nextLine();
} while (choose < 1 || choose > 4);
switch (choose) {
case 1:
List<Student> list = manager.getAll();
Collections.sort(list, cs);// 升序排列平均成绩
Collections.reverse(list);// 然后降序
System.out.println("\t学号\t|姓名|\t|专业|\t|性别|\t|高数成绩|\t|java成绩|");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
break;
case 2:
System.out.println("请输入要添加的学生的学号:");
stuNumber = input.nextLine();
System.out.println("输入所要添加的学生的姓名:");
name = input.nextLine();
System.out.println("请输入要添加的学生的专业:");
study = input.nextLine();
System.out.println("请输入要添加的学生的性别:");
sexual = input.nextLine();
System.out.println("请输入要添加的学生的数学成绩:");
math = input.nextDouble();
System.out.println("请输入要添加的学生的java成绩:");
java = input.nextDouble();
Student student = new Student(stuNumber, name, math, java, study, sexual);
if (manager.addStudent(student)) {
System.out.println("添加学生成功");
} else {
System.out.println("添加失败,可能重复添加某学生");
}
break;
case 3:
System.out.println("请输入要删除的学生学号");
stuNumber = input.nextLine();
if (manager.removeStudent(stuNumber)) {
System.out.println("已经成功删除该学生信息!");
} else {
System.out.println("删除失败,请检查是否学号输入错误!");
}
break;
case 4:
isGoing = false;
break;
}
}
}
}
这个简单的例子,ArrayList一般用来查看,遍历。因为它的底层是数组,所以效率会高些。LinkedList则多数用来进行增加,删除,其底层类似于C 语言中的指针,所以增加和删除效率会高些。
说这些呢,是为了说一句,我们平时用的话,不会单一的就只有查看,或者只有增加,删除,一般都会是一半的一半,他们哥俩都会有,如果不知道选什么集合容器,那么这个时候,就去选择ArrayList,因为一般用到集合,很少去对它操纵,查看的机会会多一些。还有就是程序的截图就不发了哈。ArrayList是一个动态的数组,当添加的元素个数大于当前的容量时,会1.5倍增加自己的容量,反之当少于当前一半容量时会自动的把容量变成当前的一半,变化是相同的道理。
但是,ArrayList在不传入参数时,默认大小时10,当传入参数时,传了多少,最小容量就是多少。
举个例子:
假如当前申请容量是默认的10,当传入10个元素之后,再次添加会自动扩容到15。