JAVA实验四集合与函数式编程实验

前言:代码是分开写的,大家用的时候写在一个包里面就行

题目内容:

在com.experiment04.entity下,创建Student类,代码如下;

在com.experiment04.resource下,创建DatabaseUtils类,代码如下;

在com.experiment04.service下,创建StudentService接口,代码如下;

在com.experiment04.service.impl下,创建StudentService接口的实现类StudentServiceImpl基于集合stream等操作,按接口方法注释需求实现

com.experiment04下,创建Test类,

为每个接口方法创建静态测试方法,在main()主函数调用

面向接口编程,测试StudentService接口中方法的实现

com/experiment04/entity/Student.java

package com.experiment04.entity;

public class Student {
    public enum Sex {
        MALE, FEMALE
    }
    private int id;
    private Sex sex;
    private String name;
    // 例如2017级
    private int year;
    public Student(int id, Sex sex, String name, int year) {
        this.id = id;
        this.sex = sex;
        this.name = name;
        this.year = year;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public Sex getSex() {
        return sex;
    }

    public void setSex(Sex sex) {
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }
}

 com/experiment04/resource/DatabaseUtils.java

    package com.experiment04.resource;
    import com.experiment04.entity.Student;
    import java.util.ArrayList;
    import java.util.List;

    public class DatabaseUtils {
        private static final List<Student> STUDENTS = create();
        private static List<Student> create() {
            List<Student> students = new ArrayList<>();
            students.add(new Student(201001, Student.Sex.FEMALE, "赵阳阳", 2010));
            students.add(new Student(201002, Student.Sex.MALE, "邵鹏", 2010));
            students.add(new Student(201103, Student.Sex.MALE, "高学斌", 2011));
            students.add(new Student(201104, Student.Sex.MALE, "张扬", 2011));
            students.add(new Student(201205, Student.Sex.FEMALE, "吕惠玲", 2012));
            students.add(new Student(201206, Student.Sex.MALE, "曾志优", 2012));
            return students;
        }

        public static List<Student> getStudents() {
            return STUDENTS;
        }
    }

 com/experiment04/service/impl/StudentServiceImpl.java

package com.experiment04.service.impl;
import com.experiment04.entity.Student;
import com.experiment04.resource.DatabaseUtils;
import com.experiment04.service.StudentService;

import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class StudentServiceImpl implements StudentService {

    public List<Student> addStudent(Student student) {
        List<Student> students=DatabaseUtils.getStudents();
        students.add(student);
        return students;
    }

    public List<Student> listStudentsByYear(int year) {
        List<Student> students=DatabaseUtils.getStudents();
        return students.stream()
                .filter(student -> student.getYear()==year)
                .collect(Collectors.toList());
    }

    public List<String> listStudentsNames(int year, Student.Sex sex) {
        List<Student> students=DatabaseUtils.getStudents();
        return students.stream()
                .filter(student -> student.getYear()==year&&student.getSex()==sex)
                .map(student -> student.getName())
                .collect(Collectors.toList());
    }

    public Map<Student.Sex, List<Student>> mapStudentsBySex() {
        List<Student> students=DatabaseUtils.getStudents();
        return students.stream()
                .collect(Collectors.groupingBy(student -> student.getSex()));
    }

    public boolean removeStudent(int id) {
        List<Student> students=DatabaseUtils.getStudents();
        return students.removeIf(student -> student.getId()==id);
    }
}

 com/experiment04/service/StudentService.java

package com.experiment04.service;
import com.experiment04.entity.Student;
import java.util.List;
import java.util.Map;

public interface StudentService {
    /**
     * 向集合添加一个学生,返回当前全部学生
     * @param student
     * @return
     */
    List<Student> addStudent(Student student);

    /**
     * 返回指定届的全部学生
     * @param year
     * @return
     */
    List<Student> listStudentsByYear(int year);

    /**
     * 返回指定届,指定性别的全部学生的姓名
     * @param year
     * @param sex
     * @return
     */
    List<String> listStudentsNames(int year, Student.Sex sex);

    /**
     * 将所有学生,以性别分组
     * @return
     */
    Map<Student.Sex, List<Student>> mapStudentsBySex();

    /**
     * 删除指定学号的学生,返回是否成功删除
     * @param id
     * @return
     */
    boolean removeStudent(int id);
}

 com/experiment04/Test.java

package com.experiment04;

import com.experiment04.entity.Student;
import com.experiment04.service.StudentService;
import com.experiment04.service.impl.StudentServiceImpl;

public class Test {
    private static StudentService stuSer=new StudentServiceImpl();
    public static void addStuTest() {
        Student s=new Student(1001, Student.Sex.FEMALE,"zhangsan",2016);
        System.out.println("-------addStuTest---------");
        stuSer.addStudent(s)
                .forEach(a->{
                    System.out.println(a.getId()+" "+a.getName()+" "+a.getSex()+" "+a.getYear());
                });
    }
    public static void listStudentsByYear(){
        int year=2016;
        System.out.println("-------listStudentsByYear---------");
        stuSer.listStudentsByYear(year)
                .forEach(a->{
                    System.out.println(a.getId()+" "+a.getName()+" "+a.getSex()+" "+a.getYear());
                });
    }
    public static void listStudentsNames(){
        int year=2012;
        Student.Sex sex= Student.Sex.FEMALE;
        System.out.println("-------listStudentsNames---------");
        System.out.println(stuSer.listStudentsNames(year,sex));
    }
    public static void  removeStudent(){
        int id=1001;
        System.out.println("-------removeStudent---------");
        System.out.println(stuSer.removeStudent(id));
    }
    public static void main(String[] args) {
        addStuTest();
        listStudentsByYear();
        listStudentsNames();
        removeStudent();
    }
}

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小李小于

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

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

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

打赏作者

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

抵扣说明:

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

余额充值