数据
员工姓名 | 性别 | 职级 | 入职年月日 | 工资 |
---|---|---|---|---|
A | 男 | PG1 | 2018/2/15 | 5000 |
B | 女 | PG2 | 2018/5/21 | 6000 |
C | 男 | PG0 | 2018/3/12 | 4000 |
D | 女 | PG3 | 2018/3/11 | 7000 |
E | 男 | PG0 | 2018/3/12 | 4100 |
排序前数据
要求
按照一下要求排序:入职年月(降序) > 职级(降序) > 工资(降序)
代码
Person.java
package com.soft.pig;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Person implements Comparable<Person>{
String name;
String sex;
Date birthday;
String level;
String selery;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
public String getSelery() {
return selery;
}
public void setSelery(String selery) {
this.selery = selery;
}
@Override
public String toString() {
return "Person [name=" + name + ", sex=" + sex + ", birthday=" + new SimpleDateFormat("yyyy/MM/dd").format(birthday) + ", level=" + level + ", selery="
+ selery + "]";
}
/**
* 这段代码是排序核心代码
* 参数对象o在前是降序
* 参数对象o在后是升序
*/
@Override
public int compareTo(Person o) {
// 入职时间
if(!o.getBirthday().equals(getBirthday())) {
return o.getBirthday().compareTo(getBirthday());
// 职级
} else if(!o.getLevel().equals(getLevel())) {
return o.getLevel().compareTo(getLevel());
// 工资
} else {
return Integer.valueOf(o.getSelery()) - Integer.valueOf(getSelery());
}
}
}
测试
Test3.java
package com.soft.pig;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test3 {
public void read() throws Exception{
// 获取文件
File file = new File("C:\\Users\\admin\\Desktop\\infor.csv") ;
// 读取文件
BufferedReader reader = new BufferedReader(new FileReader(file));
// 单行内容
String str = "";
// 标题数组
String[] title = null;
// 存放Person的集合
List<Person> list = null;
// 是否是第一行(标题行)
boolean l = true;
// 每次读取一行
while((str = reader.readLine()) != null) {
String[] rs = str.split(",");
// 因为有标题行,所以第一行直接跳过
if(l) {
// 存储标题
title = rs;
l = false;
continue;
}
Person p = new Person();
if(list == null) {
list = new ArrayList<Person>();
}
list.add(p);
// 封装数据
p.setName(rs[0]);
p.setSex(rs[1]);
p.setLevel(rs[2]);
p.setBirthday(new SimpleDateFormat("yyyy/MM/dd").parse(rs[3]));
p.setSelery(rs[4]);
}
// 调用sort方法
Collections.sort(list);
// 写文件到D盘
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("D:/p.csv")));
// 因为有标题,所以需要先写标题
bw.write(title[0] + ",");
bw.write(title[1] + ",");
bw.write(title[2] + ",");
bw.write(title[3] + ",");
bw.write(title[4]);
// 换行
bw.newLine();
// 遍历集合输入内容
for(Person p : list) {
bw.write(p.getName() + ",");
bw.write(p.getSex() + ",");
bw.write(p.getLevel() + ",");
// 日期转字符
bw.write(new SimpleDateFormat("yyyy/MM/dd").format(p.getBirthday()) + ",");
bw.write(p.getSelery());
bw.newLine();
}
// 关闭流
bw.close();
reader.close();
}
public static void main(String[] args) {
try {
// 懒省事儿直接new对象调用了
new Test3().read();
} catch (Exception e) {
e.printStackTrace();
}
}
}