数据源
empid deptid salary
1 10 5500.00
2 20 4800.00
3 40 14500.00
4 40 44500.00
5 50 6500.00
6 50 7500.00
7 10 4500.00
8 40 6500.00
9 20 1900.00
输出:(按照部门deptid分组,对工资进行降序,算出排名)
empid deptid salary rank
1 10 5500.00 1
7 10 4500.00 2
2 20 4800.00 1
9 20 1900.00 2
4 40 44500.00 1
3 40 14500.00 2
8 40 6500.00 3
6 50 7500.00 1
5 50 6500.00 2
通过编写JAVA代码排序算法实现,不能通过JDBC编写SQL实现。
代码:
package com.company;
import java.io.Console;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class SalaryInfo{
int empid;
int depid;
double salary;
void setEmpid(int empid){
this.empid = empid;
}
void setDepid(int depid){
this.depid = depid;
}
void setSalary(double salary){
this.salary = salary;
}
SalaryInfo(int empid, int depid, double salary){
this.empid = empid;
this.depid = depid;
this.salary = salary;
}
}
class SalaryInfoComparator implements Comparator {
@Override
public int compare(Object o1, Object o2) {
if(o1.getClass() == SalaryInfo.class && o2.getClass() == SalaryInfo.class){
if(((SalaryInfo) o1).depid > ((SalaryInfo) o2).depid){
return 1;
}else if(((SalaryInfo) o1).depid == ((SalaryInfo) o2).depid){
if(((SalaryInfo) o1).salary > ((SalaryInfo) o2).salary){
return -1;
}else if(((SalaryInfo) o1).salary == ((SalaryInfo) o2).salary){
return 0;
}{
return 1;
}
}else{
return -1;
}
}else{
System.out.println("参数不是SalaryInfo类型");
return 0;
}
}
}
public class Main {
public static void main(String[] args) {
// write your code here
SalaryInfo salaryInfo1 = new SalaryInfo(1, 10, 5500.00);
SalaryInfo salaryInfo2 = new SalaryInfo(2, 20, 4800.00);
SalaryInfo salaryInfo3 = new SalaryInfo(3, 40, 14500.00);
SalaryInfo salaryInfo4 = new SalaryInfo(4, 40, 44500.00);
SalaryInfo salaryInfo5 = new SalaryInfo(5, 50, 6500.00);
SalaryInfo salaryInfo6 = new SalaryInfo(6, 50, 7500.00);
SalaryInfo salaryInfo7 = new SalaryInfo(7, 10, 4500.00);
SalaryInfo salaryInfo8 = new SalaryInfo(8, 40, 6500.00);
SalaryInfo salaryInfo9 = new SalaryInfo(9, 20, 1900.00);
List<SalaryInfo> list = new ArrayList<SalaryInfo>();
list.add(salaryInfo1);
list.add(salaryInfo2);
list.add(salaryInfo3);
list.add(salaryInfo4);
list.add(salaryInfo5);
list.add(salaryInfo6);
list.add(salaryInfo7);
list.add(salaryInfo8);
list.add(salaryInfo9);
Collections.sort(list, new SalaryInfoComparator());
for(SalaryInfo salaryInfo:list){
System.out.println(salaryInfo.empid + " " + salaryInfo.depid + " " + salaryInfo.salary);
}
}
}
水题一道~,感觉就是考察Comparator 的用法,,,