ArrayList的学生管理

一个学生类

学生的属性有:学生学号,姓名,高数成绩,计算机成绩(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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你家宝宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值