java筆試 20200612 14:00-15:00

數據源

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 的用法,,,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章