2 . 编写满足以下要求的类:① Student类:含 id ,name ,isMale,birth等私有字段② 使用Eclipse自动产生Student 类各字段的getter/setter....

题目如下: 

package y_Student;

public class Student {
	private int id;
	private String name;
	private int isMale;
	private String birth;
	
	//自动生成的getter/setter方法
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getIsMale() {
		return isMale;
	}
	public void setIsMale(int isMale) {
		this.isMale = isMale;
	}
	public String getBirth() {
		return birth;
	}
	public void setBirth(String birth) {
		this.birth = birth;
	}
	//自动生成的完全构造方法
	public Student(int id, String name, int isMale, String birth) {
		super();
		this.id = id;
		this.name = name;
		this.isMale = isMale;
		this.birth = birth;
	}
	//自动生成的代码框架
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", isMale=" + isMale + ", birth=" + birth + ", getId()="
				+ getId() + ", getName()=" + getName() + ", getIsMale()=" + getIsMale() + ", getBirth()=" + getBirth()
				+ ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString()
				+ "]";
	}
	
}

 

package y_Student;

public class StudentTest {
	public static void main(String[] args) {
		Student student1 = new Student(1,"Niko",1,"2004年4月1日");
		System.out.println(student1.toString());
		System.out.println();
		System.out.println("修改内容后的内容如下:");
		System.out.println();
		student1.setName("Mary");
		student1.setIsMale(0);
		student1.setId(2);
		student1.setBirth("2004年1月11日");
		System.out.println(student1.toString());
	}
}

 运行结果如下:

其中自动生成的部分具体操作可参考: 

Eclipse自动生成类的getter/setter,构造方法,重写toString方法的代码框架功能。-CSDN博客 

使用Apache Flink处理CSV文件并完成这些统计,首先确保已安装Flink和相关的数据处理库。以下是一个简单的示例,我们将使用`Flink SQL`来读取CSV文件,并进行所需的聚合操作: ```java import org.apache.flink.api.common.functions.MapFunction; import org.apache.flink.api.java.tuple.Tuple2; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; public class StudentCsvProcessing { public static void main(String[] args) throws Exception { // 创建流处理环境 final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); // 设置CSV文件路径 String csvPath = "path/to/student.csv"; // 从CSV读取数据 DataStream<String> textDS = env.readTextFile(csvPath); // 解析CSV行为字段 DataStream<Row> rowDS = textDS.map(new CSVToRowFunction()); // 定义型 RowTypeInfo typeInfo = new RowTypeInfo( Types.STRING(), // 班级名称 Types.INT(), // 学号 Types.STRING(), // 姓名 Types.STRING(), // 性别 Types.DOUBLE() // 分数 ); // 转换为Row型,假设学生表名为Student DataStream<Student> studentDS = rowDS.getTypeInformation(typeInfo).cast(rowDS); // 统计总人数、男生人数、女生人数 Tuple2<Long, Long>[] counts = { new Tuple2<>("总人数", studentDS.count()), new Tuple2<>("男生人数", studentDS.filter(Student::isMale).count()), new Tuple2<>("女生人数", studentDS.filter(Student::isFemale).count()) }; // 计算班级最高分和最低分 Tuple2<Double, Double>[] extremes = { new Tuple2<>("班级最高分", studentDS.map(new GetMaxScore()).reduce((a, b) -> Math.max(a.f0, b.f0))), new Tuple2<>("班级最低分", studentDS.map(new GetMinScore()).reduce((a, b) -> Math.min(a.f0, b.f0))) }; // 男生中的最高分和女生中的最高分 Tuple2<Double, Double>[] genderHighScores = { new Tuple2<>("男生最高分", studentDS.filter(Student::isMale).map(new GetMaxScoreForGender()).max(1)), new Tuple2<>("女生最高分", studentDS.filter(Student::isFemale).map(new GetMaxScoreForGender()).max(1)) }; // 打印结果 env.execute("Student CSV Processing"); } // 示例MapFunction实现 private static class CSVToRowFunction implements MapFunction<String, Row> { // 这里需要根据实际CSV文件结构定义转换逻辑 } // 假设Student有相应的字段getter/setter static class Student { private String className; private int id; private String name; private String gender; private double score; // getters and setters } // 获取分数的方法 private static class GetMaxScore extends RichFunction { @Override public void open(Configuration parameters) throws Exception { // 初始化全局最高分 } @Override public void invoke(Context context, Row value) throws Exception { score = value.getDouble(4); // 第四个字段是分数 // 更新全局最高分 } } // 获取特定性别的最高分 private static class GetMaxScoreForGender extends RichFunction { // 似GetMaxScore,但只对指定性别应用 } // ...其他似 } ``` 请注意,这个示例假设了CSV文件的结构(如逗号分隔等),并且需要自定义`CSVToRowFunction`来正确地解析CSV行。同时,你需要提供`GetMaxScore`和`GetMaxScoreForGender`的具体实现,它们负责获取每个学生的分数或特定性别的最高分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值