Java中关于ArrayList集合的练习题

目录

题目内容​编辑

完整源码


题目内容

  1. 根据下图所示数据,定义学生类Student,设置对应的字段并进行封装
  2. 在Test中,定义ArrayList集合 ,将上述学生对象实例化,并放入集合,
  3. 定义方法t1,参数为学生类集合,功能是输出显示所有学生信息
  4. 定义方法t2,参数为学生类集合,班级和性别,实现按照班级和性别查询功能。主方法中调用该方法,实现查询网络技术101班级的女生信息
  5. 定义方法t3,实现按姓名模糊查询功能,如果存在符合条件的学生,返回相关学生信息,否则输出没有数据
  6. 定义方法t4, 返回类型为学生类集合,参数为学生类对象,实现功能是修改学生信息。主方法中调用该方法,实现将班级为”电子商务111”的学生修改成电子商务101
  7. 定义方法t5, 返回类型为学生类集合,参数也是学生类集合,实现按照出生日期降序排列的功能

完整源码

Student.java

public class Student {
	private String studentId;  //学号
    private String name;       //姓名
    private String gender;     //性别
    private String birthdate;  //出生日期
    private String major;      //专业名字

    public Student() {
    	
    }
    
    public Student(String studentId, String name, String gender, String birthdate, String major) {
        this.studentId = studentId;
        this.name = name;
        this.gender = gender;
        this.birthdate = birthdate;
        this.major = major;
    }
    
    public void setStudentId(String studentId) {
		this.studentId = studentId;
	}

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

	public void setGender(String gender) {
		this.gender = gender;
	}

	public void setBirthdate(String birthdate) {
		this.birthdate = birthdate;
	}

	public void setMajor(String major) {
		this.major = major;
	}

	public String getStudentId() {
        return studentId;
    }

    public String getName() {
        return name;
    }

    public String getGender() {
        return gender;
    }

    public String getBirthdate() {
        return birthdate;
    }

    public String getMajor() {
        return major;
    }
}

Main.java

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Student> students = new ArrayList<>();
        //2,	在Test中,定义ArrayList集合 ,将上述学生对象实例化,并放入集合,
        students.add(new Student("10101001", "张永峰", "男", "1993-08-01", "电子商务101"));
        students.add(new Student("10101002", "何小丽", "女", "1992-11-03", "电子商务101"));
        students.add(new Student("10101003", "张宇", "男", "1992-08-21", "电子商务101"));
        students.add(new Student("10102001", "王斌", "男", "1991-07-14", "网络技术101"));
        students.add(new Student("10109002", "孙立金", "男", "1993-11-15", "网络技术101"));
        students.add(new Student("10102004", "翁静静", "女", "1992-02-27", "网络技术101"));
        students.add(new Student("11101001", "刘淑芳", "女", "1994-06-10", "电子商务111"));
        students.add(new Student("11101002", "王亚旭", "男", "1993-03-18", "电子商务111"));
        students.add(new Student("11101003", "高磊", "男", "1993-05-11", "电子商务111"));
        
        t1(students);

        List<Student> filteredStudents = t2(students, "网络技术101", "女");
        System.out.println("按照班级和性别查询结果:");
        t1(filteredStudents);

        String searchKeyword = "张";
        List<Student> searchResult = t3(students, searchKeyword);
        if (searchResult.isEmpty()) {
            System.out.println("没有符合条件的学生数据。");
        } else {
            System.out.println("按姓名模糊查询结果:");
            t1(searchResult);
        }

        List<Student> updatedStudents = t4(students, "电子商务111", "电子商务101");
        System.out.println("修改学生信息后的结果:");
        t1(updatedStudents);

        List<Student> sortedStudents = t5(students);
        System.out.println("按出生日期降序排列的结果:");
        t1(sortedStudents);
    }

    //3,	定义方法t1,参数为学生类集合,功能是输出显示所有学生信息
    public static void t1(List<Student> students) {
        System.out.println("学生信息:");
        for (Student student : students) {
            System.out.println("学号:" + student.getStudentId());
            System.out.println("姓名:" + student.getName());
            System.out.println("性别:" + student.getGender());
            System.out.println("出生日期:" + student.getBirthdate());
            System.out.println("专业:" + student.getMajor());
            System.out.println();
        }
    }

    //4,	定义方法t2,参数为学生类集合,班级和性别,实现按照班级和性别查询功能。
    //主方法中调用该方法,实现查询网络技术101班级的女生信息
    public static List<Student> t2(List<Student> students, String major, String gender) {
        List<Student> filteredStudents = new ArrayList<>();
        for (Student student : students) {
            if (student.getMajor().equals(major) && student.getGender().equals(gender)) {
                filteredStudents.add(student);
            }
        }
        return filteredStudents;
    }

    //5,	定义方法t3,实现按姓名模糊查询功能,如果存在符合条件的学生,返回相关学生信息,否则输出没有数据
    public static List<Student> t3(List<Student> students, String searchKeyword) {
        List<Student> searchResult = new ArrayList<>();
        for (Student student : students) {
            if (student.getName().contains(searchKeyword)) {
                searchResult.add(student);
            }
        }
        return searchResult;
    }

    //6,	定义方法t4, 返回类型为学生类集合,参数为学生类对象,实现功能是修改学生信息。
    //主方法中调用该方法,实现将班级为”电子商务111”的学生修改成电子商务101
    public static List<Student> t4(List<Student> students, String originalMajor, String newMajor) {
        List<Student> updatedStudents = new ArrayList<>();
        for (Student student : students) {
            if (student.getMajor().equals(originalMajor)) {
                student = new Student(student.getStudentId(), student.getName(), student.getGender(),
                        student.getBirthdate(), newMajor);
            }
            updatedStudents.add(student);
        }
        return updatedStudents;
    }

    //7,	定义方法t5, 返回类型为学生类集合,参数也是学生类集合,实现按照出生日期降序排列的功能
    public static List<Student> t5(List<Student> students) {
        List<Student> sortedStudents = new ArrayList<>(students);
        Collections.sort(sortedStudents, Comparator.comparing(Student::getBirthdate).reversed());
        return sortedStudents;
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于2023年的Java高级面试题,以下是一些可能涉及的主题和问题: 1. Java基础知识 - 什么是Java的反射机制?如何使用反射调用方法和访问属性? - 什么是Java的序列化? 如何实现对象的序列化和反序列化? - 解释一下Java的多态性和继承关系。 - 什么是内部类?它们有哪些不同类型? - 什么是异常处理?Java常见的异常类型有哪些? 2. 集合框架 - 介绍一下Java集合框架,并举例说明各种集合类的使用场景。 - ArrayList和LinkedList之间的区别是什么? - HashMap和TreeMap之间的区别是什么? - 什么是迭代器?如何使用迭代器遍历集合元素? 3. 多线程与并发 - 什么是线程安全?如何在Java实现线程安全? - 解释一下Java的线程池,它有哪些优势? - 什么是死锁?如何避免死锁的发生? - 介绍一下Java的同步机制,包括synchronized关键字和Lock接口。 4. 设计模式 - 介绍一下常见的设计模式,如单例模式、工厂模式、观察者模式等。 - 解释一下策略模式和模板方法模式的区别。 - 什么是依赖注入(DI)?如何在Java实现依赖注入? 5. JVM与性能优化 - 什么是Java虚拟机(JVM)?它有哪些重要组成部分? - 什么是垃圾回收(GC)?Java有哪些常见的垃圾回收算法? - 如何进行Java程序的性能调优? - 什么是内存泄漏?如何避免内存泄漏的发生? 这些问题只是作为参考,并不代表完整的面试题目。实际面试,可能还会涉及到项目经验、数据库、网络编程等其他方面的问题。建议在准备面试时全面复习Java的各个方面知识,并结合自己的项目经验进行准备。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员老李头

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

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

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

打赏作者

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

抵扣说明:

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

余额充值