簡體   English   中英

Java基於textField對arrayList進行排序

[英]Java Sorting arrayList based on textField

背景:我創建了這個員工記錄應用程序,您可以在其中添加人員ID,名字,姓氏,薪資和開始日期。 它由“添加”按鈕,“刪除”按鈕,“列表”組合框和輸出組成。

我需要幫助的是按ID排序arrayList並在輸出中顯示排序的版本。 `public class EmployeeRecordsView擴展了FrameView {

    ArrayList <one> myList = new ArrayList <one>();
    //List<one> records = new ArrayList<one>();
    String iD, first, last, salary, startDate;
    public EmployeeRecordsView(SingleFrameApplication app) {
      //Cut out code
    }

    class one {
        String iD, first, last, salary, startDate;
        one (String _iD, String _first, String _last, String _salary, String
        _startDate){
            iD = _iD;
            first = _first;
            last = _last;
            salary = _salary;
            startDate = _startDate;
        }
    }
    private void btnAddMouseClicked(java.awt.event.MouseEvent evt) {                                    
       one emp;
       iD = id.getText();
       first = firstName.getText();
       last = lastName.getText();
       salary = sal.getText();
       startDate = start.getText();
       emp = new one(iD, first, last, salary, startDate);
       myList.add(emp);
    }                                   

    private void btnRemoveMouseClicked(java.awt.event.MouseEvent evt) {                                       
        String remove;
        remove = id.getText();
        myList.remove(remove);
    }                                      

    private void btnExitMouseClicked(java.awt.event.MouseEvent evt) {                                     
        System.exit(0);
    }                                    


    private void jComboBox1MouseClicked(java.awt.event.MouseEvent evt) {
     if (jComboBox1.getSelectedItem() == "Order of Addition"){
            String temp="";

        for (int x=0; x<=myList.size()-1; x++) {
            temp = temp + "ID#: " + myList.get(x).iD + ", "
                    + "First Name: " + myList.get(x).first + ", "
                    + "Last Name: " + myList.get(x).last + ", "
                    + "Annual Salary: " + myList.get(x).salary + ", "
                    + "Starting Date: " + myList.get(x).startDate + "\n";
        }
        outPut.setText(temp);
        }

     if (jComboBox1.getSelectedItem() == "ID"){
         String temp="";
        for (int x=0; x<=myList.size()-1; x++) {
                  temp = temp + "ID#: " + myList.get(x).iD + ", "
                    + "First Name: " + myList.get(x).first + ", "
                    + "Last Name: " + myList.get(x).last + ", "
                    + "Annual Salary: " + myList.get(x).salary + ", "
                    + "Starting Date: " + myList.get(x).startDate + "\n";
        }
        outPut.setText(temp);
     }`
    }

使用Collections.sort(List, Comparator) ,它允許您通過使用Comparator以自定義方式對List進行排序。

因此,基於對您的one類稍作修改,包含一個getter來檢索iD

class One {

    String iD, first, last, salary, startDate;

    One(String _iD, String _first, String _last, String _salary, String _startDate) {
        iD = _iD;
        first = _first;
        last = _last;
        salary = _salary;
        startDate = _startDate;
    }

    public String getID() {
        return iD;
    }
}

你可以用......

Collections.sort(myList, new Comparator<One>() {
    @Override
    public int compare(One o1, One o2) {
        return o1.getID().compareTo(o2.getID());
    }
});

現在請注意,這將按自然順序對ID進行排序,即1將不會出現在10之前,這就是String排序的工作方式......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM