Khóa học free Bài 36: Sắp xếp các đối tượng trong ArrayList

Thảo luận trong 'Java cơ bản' bắt đầu bởi Tiasangmoi92, 23/8/13.

  1. Tiasangmoi92

    Tiasangmoi92 Super Moderator

    Lượt xem: 45,732
    /* Bài viết thuộc loạt bài hướng dẫn trong "Khóa Học Lập Trình Java Miễn Phí"
    trên diễn đàn Android.Vn, bạn có thể vào đây đọc

    để hiểu hơn về khóa học và tham gia ngay cùng mọi người;) */

    java-logo
    **Trong thực tế khi lập trình, công việc sắp xếp 1 danh sách các đối tượng phải áp dụng rất nhiều. Ví dụ:
    - Sắp xếp họ tên theo thứ tự a, b, c.
    - Sắp xếp danh sách kết quả thi theo thứ tự từ cao xuống thấp.
    - Sắp xếp tài liệu theo thứ tự mới trước, cũ sau.
    - ..v.v..

    - Việc sắp xếp một các đối tượng trong 1 ArrayList có thể có nhiều cách. Các bạn có thể áp dụng các phương pháp cơ bản, hoán đổi vị trí khi so sánh giống như việc sắp xếp các phần tử trong mảng đã dùng. Tuy nhiên, ở bài này mình sẽ giới thiệu 1 cách sắp xếp cực ngắn gọn, Java đã hỗ trợ sẵn, đó là phương thức sắp xếp Collection.sort.
    - Mình sẽ nêu một vài ví dụ cụ thể để các bạn cùng tìm hiểu!
    Ở các ví dụ này, các thuộc tính đối tượng mình để public cho ngắn gọn, chúng ta tập trung vào đoạn sắp xếp!

    Ví dụ 1: Sắp xếp một danh sách các đối tượng sinh viên có 2 thuộc tính họ tên và điểm thi.
    Các bạn chú ý đoạn này:
    PHP:
    //Sắp xếp danh sách theo theo số điểm giảm dần!
            
    Collections.sort(danhSach, new Comparator<SinhVien>() {
                @
    Override
                
    public int compare(SinhVien sv1SinhVien sv2) {
                    if (
    sv1.diem sv2.diem) {
                        return 
    1;
                    } else {
                        if (
    sv1.diem == sv2.diem) {
                            return 
    0;
                        } else {
                            return -
    1;
                        }
                    }
                }
            });
    - Trên là cách sử dụng phương thức Collections.sort với danhSach là một đối tượng ArrayList, bên trong chứa danh sách các đối tượng SinhVien
    - Phương thức public int compare(SinhVien sv1, SinhVien sv2) trả về kiểu giá trị nguyên. Đoạn code trên là giúp sắp xếp theo thứ tự giảm dần của số điểm từng đối tượng sinh viên. Nếu bạn muốn sắp xếp tăng dần thì đổi chỗ 1-1 cho nhau là được!
    PHP:
    Collections.sort(danhSach, new Comparator<SinhVien>() {
                @
    Override
                
    public int compare(SinhVien sv1SinhVien sv2) {
                    if (
    sv1.diem sv2.diem) {
                        return -
    1;
                    } else {
                        if (
    sv1.diem == sv2.diem) {
                            return 
    0;
                        } else {
                            return 
    1;
                        }
                    }
                }
            });
    Toàn bộ code chương trình như sau:
    PHP:
    package javaandroidvn;
     
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Scanner;
     
    class 
    SinhVien {
     
        public 
    String hoTen;
        public 
    int diem;
    }
     
    public class 
    JavaAndroidVn {
     
        public static 
    void main(String[] args) {
            
    Scanner input = new Scanner(System.in);
            
    System.out.println("Nhập số sinh viên: ");
            
    int n input.nextInt();
     
            
    ArrayList<SinhViendanhSach = new ArrayList();
     
            for (
    int i 0ni++) {
                
    input.nextLine();
                
    SinhVien x = new SinhVien();
                
    System.out.println("Thông tin sinh viên thứ " i);
                
    System.out.print("Họ và Tên: ");
                
    x.hoTen input.nextLine();
                
    System.out.print("Điểm: ");
                
    x.diem input.nextInt();
                
    danhSach.add(x);
            }
     
            
    //Sắp xếp danh sách theo số điểm giảm dần!
            
    Collections.sort(danhSach, new Comparator<SinhVien>() {
                @
    Override
                
    public int compare(SinhVien sv1SinhVien sv2) {
                    if (
    sv1.diem sv2.diem) {
                        return 
    1;
                    } else {
                        if (
    sv1.diem == sv2.diem) {
                            return 
    0;
                        } else {
                            return -
    1;
                        }
                    }
                }
            });
     
            
    System.out.println("Danh sách sắp xếp theo thứ tự điểm giảm dần là: ");
            for (
    int i 0danhSach.size(); i++) {
                
    System.out.println("Tên: " danhSach.get(i).hoTen " Điểm: " danhSach.get(i).diem);
            }
        }
    }
    Ví dụ 2: Sắp xếp danh sách các đối tượng theo thứ tự trong bảng chữ cái! a b c
    PHP:
    package javaandroidvn;
     
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Scanner;
     
    class 
    SinhVien {
     
        public 
    String hoTen;
        public 
    int diem;
    }
     
    public class 
    JavaAndroidVn {
     
        public static 
    void main(String[] args) {
            
    Scanner input = new Scanner(System.in);
            
    System.out.println("Nhập số sinh viên: ");
            
    int n input.nextInt();
     
            
    ArrayList<SinhViendanhSach = new ArrayList();
     
            for (
    int i 0ni++) {
                
    input.nextLine();
                
    SinhVien x = new SinhVien();
                
    System.out.println("Thông tin sinh viên thứ " i);
                
    System.out.print("Họ và Tên: ");
                
    x.hoTen input.nextLine();
                
    System.out.print("Điểm: ");
                
    x.diem input.nextInt();
                
    danhSach.add(x);
            }
     
            
    //Sắp xếp danh sách theo theo thứ tự a b c!
            
    Collections.sort(danhSach, new Comparator<SinhVien>() {
                @
    Override
                
    public int compare(SinhVien sv1SinhVien sv2) {
                    return (
    sv1.hoTen.compareTo(sv2.hoTen));
                    
    // Muốn đảo danh sách các bạn đối thành
                    //return (sv2.hoTen.compareTo(sv1.hoTen));
                
    }
            });
     
            
    System.out.println("Danh sách sắp xếp theo tên trong bảng chữ cái a - b - c: ");
            for (
    int i 0danhSach.size(); i++) {
                
    System.out.println("Tên: " danhSach.get(i).hoTen " Điểm: " danhSach.get(i).diem);
            }
        }
    }


    [​IMG]

    Bài tập về nhà::D
    - Nhập dữ liệu danh sách nhân viên trong công ty. Các phần tử trong danh sách có các thuộc tính họ tên, năm sinh, lương. Các thuộc tính để private.
    - Viết chương trình nhập dữ liệu từ bàn phím thông tin số nhân viên, thông tin từng nhân viên. Cuối chương trình có menu chọn.
    + Nếu ấn 1 thì sắp xếp theo thứ tự tên a, b, c. In danh sách ra màn hình.
    + Nếu ấn 2 thì sắp xếp theo mức lương giảm dần từ người cao xuống người thấp. In danh sách ra màn hình.

    (Chú ý: Các bạn nên tự giác làm bài tập, hoàn thiện rồi đăng lên, các bài bạn đã làm, nên để code trong thẻ code - chọn thẻ PHP cho rõ ràng và để ẩn code trong thẻ ẩn spoiler, để khi click vào mới hiện code lên , trước khi thử sức tự làm, bạn không nên nhìn code của các bạn khác đã đăng nhé;))

    [​IMG]

    My Facebook: https://www.facebook.com/tiasangmoi

    Bài viết đăng lên diễn đàn khác vui lòng ghi rõ nguồn: Android.Vn
    sắp xếp trong java, sắp xếp arraylist, sort object in arraylist, sắp xếp đối tượng, sắp xếp danh sách đối tượng
  2. wawabi

    wawabi New Member

    thank bn rất nhiều
  3. vinatoon

    vinatoon New Member

    cảm ơn bạn rất nhiều
  4. R700

    R700 Member

    Mỗi lần đăng bài mà có code bỏ trong thẻ spoiler là bị báo lỗi này:
    [​IMG]
    Ad xem giải quyết đi nhé, không đăng được bài là hơi bị stress rồi @@
  5. X_Dat

    X_Dat Member

    Thẻ spoiler hình như lỗi thì phải
  6. ninhdoan

    ninhdoan Banned

    ổi vị trí khi so sánh giống như việc sắp xếp các phần tử trong mảng đã dùng. Tuy nhiên, ở bài này mình sẽ giới thiệu 1 cách sắp xếp cực ngắn gọn, Java đã hỗ trợ sẵn, đó là phương thức sắp xếp Collection.sort.
    - Mình sẽ nêu một vài ví dụ cụ thể để các bạn cùng tìm hiể
  7. Tiasangmoi92

    Tiasangmoi92 Super Moderator

    Show Spoiler
    Sao mình vẫn được vậy nhỉ, thỉnh thoảng chắc bị lỗi thôi ^^
    PHP:
    public static void main()
  8. R700

    R700 Member

    Staff class:

    Show Spoiler

    PHP:
    public class StaffClass {
     
        private 
    String staffNamestaffYear;
        private 
    long staffSalary;
        public 
    String getStaffName() {
            return 
    staffName;
        }
        public 
    void setStaffName(String staffName) {
            
    this.staffName staffName;
        }
        public 
    String getStaffYear() {
            return 
    staffYear;
        }
        public 
    void setStaffYear(String staffYear) {
            
    this.staffYear staffYear;
        }
        public 
    long getStaffSalary() {
            return 
    staffSalary;
        }
        public 
    void setStaffSalary(long staffSalary) {
            
    this.staffSalary staffSalary;
        }
     
    }


    Function class:

    Show Spoiler

    PHP:
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Scanner;
     
     
    public class 
    FunctionStaff {
     
        public 
    ArrayList<StaffClassinputStaff(){
            
    Scanner sc  = new Scanner(System.in);
            
    int n 0;
         
            while(  
    n<=0){
                
    System.out.print("Number of staff: ");
                
    sc.nextInt();
            }
         
            
    ArrayList<StaffClassarrStuff = new ArrayList<>();
            for (
    int i 0ni++) {
                
    sc.nextLine();
                
    StaffClass stuff = new StaffClass();
                
    System.out.println("\nInformation of "+(i+1)+" staff:");
                
    System.out.print("Name of staff: ");
                
    stuff.setStaffName(sc.nextLine());
                
    System.out.print("Yearold of staff: ");
                
    stuff.setStaffYear(sc.nextLine());
                
    System.out.print("Salary of staff: ");
                
    stuff.setStaffSalary(sc.nextLong());
             
                
    arrStuff.add(stuff);         
            }
            return 
    arrStuff;
        }
     
        public 
    void arrSortByName(ArrayList<StaffClass>arr){
            
    Collections.sort(arr, new Comparator<StaffClass>() {
     
                @
    Override
                
    public int compare(StaffClass o1StaffClass o2) {
                    
    // TODO Auto-generated method stub
                    
    return o1.getStaffName().compareTo(o2.getStaffName());
                }
             
            });
            
    System.out.println("Sorting by staff's name:");
            
    printArr(arr);
        }
     
        public 
    void printArr(ArrayList<StaffClass>arr){
            for (
    int i 0arr.size(); i++) {
                
    System.out.println("\nSTAFF " + (1));
                
    System.out.println("Name: "+arr.get(i).getStaffName());
                
    System.out.println("Yearold: "+arr.get(i).getStaffYear());
                
    System.out.println("Salary: "+arr.get(i).getStaffSalary());
            }
        }
     
        public 
    void arrSortBySalary(ArrayList<StaffClass>arr){
            
    Collections.sort(arr, new Comparator<StaffClass>() {
     
                @
    Override
                
    public int compare(StaffClass o1StaffClass o2) {
                    
    int t  2;
                    if(
    o1.getStaffSalary() < o2.getStaffSalary())
                        
    1;
                    else if (
    o1.getStaffSalary() == o2.getStaffSalary())
                        
    0;
                    else if(
    o1.getStaffSalary() > o2.getStaffSalary())
                        
    = -1;
                    return 
    t;
                }
             
            });
            
    System.out.println("\nSorting by staff's salary:");
            
    printArr(arr);
        }
     
        public 
    void menuStaff(ArrayList<StaffClass>arr){
            try {
                
    Scanner sc = new Scanner(System.in);
                
    int t 0;
                while(
    t!= && t!=2){
                    
    System.out.println("Choose menu:");
                    
    System.out.println("1. Sorting by name");
                    
    System.out.println("2. Sorting by salary");             
                 
                    
    sc.nextInt();
                }
             
                if(
    t==1)
                    
    arrSortByName(arr);
                else
                    
    arrSortBySalary(arr);
            } catch (
    Exception e) {
                
    System.out.println(e.getMessage());
            }
        }
     
    }


    Main class:

    Show Spoiler

    PHP:
    import java.util.ArrayList;
     
     
    public class 
    Main {
     
        public static 
    void main(String[] args) {
            
    FunctionStaff function = new FunctionStaff();
            
    ArrayList<StaffClass>arr = function.inputStaff();
         
            function.
    menuStaff(arr);
        }
    }


    P/S: Post bài bằng FireFox không bị lỗi spoiler @@
    Tiasangmoi92 thích bài này.
  9. phucphuc12345

    phucphuc12345 New Member

    Thanks bài viết bổ ích :)
  10. viet55pm

    viet55pm New Member

    Mình mới học java nhé.có chỗ nào chưa đúng hi vọng được mọi người chỉ giáo :)
    Show Spoiler

    PHP:
    package arraylist2;
     
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Scanner;
     
    class 
    NhanVien {
     
        private 
    String hoTen;
        private 
    int luongnamSinh
        
    ArrayList<NhanViendanhSach = new ArrayList();
        public 
    void NhapNhanVien() {
            
    int n;
            
    Scanner input = new Scanner(System.in);
            
    System.out.println("Nhập số nhân viên: ");
            
    input.nextInt();
            for (
    int i 0ni++) {
                
    input.nextLine();
                
    NhanVien x = new NhanVien();
                
    System.out.println("Thông tin nhân viên thứ " i);
                
    System.out.print("Họ và Tên: ");
                
    x.hoTen input.nextLine();
                
    System.out.print("Lương: ");
                
    x.luong input.nextInt();
                
    System.out.print("Năm Sinh: ");
                
    x.namSinh input.nextInt();
                
    danhSach.add(x);
            }
        }
     
        public 
    void sxTheoTen() {
            
    Collections.sort(danhSach, new Comparator<NhanVien>() {
                @
    Override
                
    public int compare(NhanVien nv1NhanVien nv2) {
                    return (
    nv1.hoTen.compareTo(nv2.hoTen));
                    
    // Muốn đảo danh sách các bạn đối thành
                    //return (sv2.hoTen.compareTo(sv1.hoTen));
                
    }
            });
            
    System.out.println("Danh sách sắp xếp theo tên trong bảng chữ cái a - b - c: ");
            for (
    int i 0danhSach.size(); i++) {
                
    System.out.println("Tên: " danhSach.get(i).hoTen " Lương: " danhSach.get(i).luong);
            }
        }
     
        public 
    void sxTheoLuong() {
            
    Collections.sort(danhSach, new Comparator<NhanVien>() {
                @
    Override
                
    public int compare(NhanVien nv1NhanVien nv2) {
                    if (
    nv1.luong nv2.luong) {
                        return 
    1;
                    } else {
                        if (
    nv1.luong == nv2.luong) {
                            return 
    0;
                        } else {
                            return -
    1;
                        }
                    }
                }
            });
            
    System.out.println("Danh sách sắp xếp theo thứ tự Lương giảm dần là: ");
            for (
    int i 0danhSach.size(); i++) {
                
    System.out.println("Tên: " danhSach.get(i).hoTen " Lương: " danhSach.get(i).luong);
            }
        }
    }
     
    public class 
    ArrayList2 {
     
        public static 
    void main(String[] args) {
            
    String a,b;
            
    NhanVien nv = new NhanVien();
            
    nv.NhapNhanVien();
            
    Scanner nhap1 = new Scanner(System.in);
         
     
            do {
             
                
    System.out.println("Chọn 1 hoặc 2:");
                
    nhap1.nextLine();
               
               
               
                switch (
    a) {
                case 
    "1":
                    
    nv.sxTheoTen();
                    break;
                case 
    "2":
                    
    nv.sxTheoLuong();
                    break;
            }
                
    System.out.println("Bạn muốn  tiếp  tục thì ấn 1:");
                
    nhap1.nextLine();
               
            } while (
    b.equals("1"));
           
         
     
     
     
     
     
        }
    }
    dienlh93Tiasangmoi92 thích bài này.
  11. dienlh93

    dienlh93 New Member

    cho e hỏi bài viết này là sắp xếp như nào! khi em áp dụng vào chương trình thì nó chỉ sắp xếp đúng khi mà chỉ khai báo first name! còn khi khai báo cả last name và first name thì ko đúng...!
  12. Martimillion

    Martimillion New Member

    Thanks ! Bài viết rất hay, tiết kiệm khá nhiều thời gian tìm hiểu :D.
  13. Martimillion

    Martimillion New Member

    Thanks ! Bài viết rất hay, tiết kiệm khá nhiều thời gian tìm hiểu :D.
  14. Show Spoiler

    Mã:
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Scanner;
     
    class NVCONGTY{
        private String hoten;
        private int namsinh;
        private float luong;
        public String getHoten() {
            return hoten;
        }
        public void setHoten(String hoten) {
            this.hoten = hoten;
        }
        public int getNamsinh() {
            return namsinh;
        }
        public void setNamsinh(int namsinh) {
            this.namsinh = namsinh;
        }
        public float getLuong() {
            return luong;
        }
        public void setLuong(float luong) {
            this.luong = luong;
        }
       
    }
    public class BTBai36 {
        public static void main(String[]args){
            Scanner in=new Scanner(System.in);
           
            System.out.println("So NV cong ty:");
            int n,i;
            n=in.nextInt();
            in.nextLine();
            NVCONGTY []a=new NVCONGTY[n];
            ArrayList<NVCONGTY> arr=new ArrayList();
            System.out.println("NHap thong tin nhan vien cong ty");
            for(i=0;i<n;i++)
            {
                a[i]=new NVCONGTY();
                System.out.println("Nhan vien thu "+i);
                nhaptt(a[i]);
                arr.add(a[i]);
            }
            System.out.println("In: ");
            for ( i = 0; i < arr.size(); i++) {
                  System.out.println("Tên: " + arr.get(i).getHoten() + "\t Nam sinh: " + arr.get(i).getNamsinh()
                                          +"\t Luong: "+arr.get(i).getLuong());
              }
            System.out.println("Menu chon: ");
            System.out.println("1.Sap xep theo thu tu a-b-c... ");
            System.out.println("2.Sap xep theo muc luong giam dan.");
            System.out.println("Nhap lua chon: ");
            i=in.nextInt();
            in.nextLine();
            switch(i)
            {
                case 1:
                {
                    sxthutu(arr,a);
                   
                    break;
                }
                case 2:
                {
                    sxluong(arr,a);
                    break;
                }
            }
        }
        public static void nhaptt(NVCONGTY a){
            Scanner in=new Scanner(System.in);
            System.out.println("Ho ten: ");
            a.setHoten(in.nextLine());
            System.out.println("Nam sinh: ");
            a.setNamsinh(in.nextInt());
            in.nextLine();
            System.out.println("Luong: ");
            a.setLuong(in.nextFloat());
            in.nextLine();
        }
        public static void sxthutu(ArrayList<NVCONGTY> arr,NVCONGTY [] a)
        {
            ArrayList<NVCONGTY> ar=arr;
            int i;
            for(i=0;i<a.length;i++)
            {
                a[i]=new NVCONGTY();
            }
            //Sắp xếp danh sách theo theo thứ tự a b c!
              Collections.sort(ar, new Comparator<NVCONGTY>() {
                  @Override
                  public int compare(NVCONGTY nv1, NVCONGTY nv2) {
                      return (nv1.getHoten().compareTo(nv2.getHoten()));
                  }
              });
              System.out.println("Danh sách sắp xếp theo tên trong bảng chữ cái a - b - c: ");
              for ( i = 0; i < ar.size(); i++) {
                  System.out.println("Tên: " + ar.get(i).getHoten() + "\t Nam sinh: " + ar.get(i).getNamsinh()
                                          +"\t Luong: "+ar.get(i).getLuong());
              }
             
     
        }
        public static void sxluong(ArrayList<NVCONGTY> arr,NVCONGTY []a)
        {
            ArrayList<NVCONGTY> ar=arr;
              //Sắp xếp danh sách theo luong giảm dần!
              Collections.sort(ar, new Comparator<NVCONGTY>() {
                  @Override
                  public int compare(NVCONGTY nv1, NVCONGTY nv2) {
                      if (nv1.getLuong() < nv2.getLuong() ) {
                          return 1;
                      } else {
                          if (nv1.getLuong() == nv2.getLuong()) {
                              return 0;
                          } else {
                              return -1;
                          }
                      }
                  }
              });
     
              System.out.println("Danh sách sắp xếp theo thứ tự điểm giảm dần là: ");
              for (int i = 0; i < ar.size(); i++) {
                  System.out.println("Tên: " + ar.get(i).getHoten() + "\t Nam sinh : " + ar.get(i).getNamsinh()
                                          +"\t Luong: "+ar.get(i).getLuong());
              }
     
        }
    }
    
  15. chiennv

    chiennv New Member

    Bài của mình :)
    Show Spoiler

    Mã:
    /**
    *
    */
    package Example;
     
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Scanner;
     
    /**
    * @author Chienbk
    *
    */
    public class SortStaff {
     
        /**
        * @param args
        *            Nhập dữ liệu danh sách nhân viên trong công ty. Các phần tử
        *            trong danh sách có các thuộc tính họ tên, năm sinh, lương.
        *            Các thuộc tính để private. Viết chương trình nhập dữ liệu từ bàn
        *            phím thông tin số nhân viên, thông tin từng nhân viên. Cuối
        *            chương trình có menu chọn. Nếu ấn 1 thì sắp xếp theo thứ tự
        *            tên a, b, c. In danh sách ra màn hình. Nếu ấn 2 thì sắp xếp
        *            theo mức lương giảm dần từ người cao xuống người thấp. In danh
        *            sách ra màn hình.
        */
        public int choice;
        ArrayList<Staff> arrL = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        private static Scanner s;
     
        public void addStaff() {
            System.out.print("Input your number you want add: ");
            choice = sc.nextInt();
     
            for (int i = 0; i < choice; i++) {
                Staff st = new Staff();
                sc.nextLine();
                System.out.print("Input name: ");
                st.setName(sc.nextLine());
                //sc.nextLine();
                System.out.print("Input age: ");
                st.setAge(sc.nextInt());
                System.out.print("Input salary: ");
                st.setSalary(sc.nextInt());
               
                arrL.add(st);
               
            }
     
        }
        public void sortName(){
            Collections.sort(arrL, new Comparator<Staff>() {
                public int compare(Staff st1, Staff st2){
                    return(st1.getName().compareTo(st2.getName()));
                }
            });
            System.out.println("List affter sort: ");
            for (int i = 0; i < arrL.size(); i++) {
                System.out.print(" Name: "+ arrL.get(i).getName()+ " age: "+ arrL.get(i).getAge()+ " salary: "+ arrL.get(i).getSalary());
                System.out.println();
            }
        }
        public void sortSalary(){
            Collections.sort(arrL, new Comparator<Staff>() {
                public int compare(Staff st1, Staff st2){
                    if (st1.getSalary()<st2.getSalary()) {
                        return 1;
                    } else {
                        if (st1.getSalary() == st2.getSalary()) {
                            return 0;
                        } else {
                            return -1;
     
                        }
     
                    }
                }
            });
            System.out.println("List affter sort");
            for (int i = 0; i < arrL.size(); i++) {
                System.out.print(" Name: "+ arrL.get(i).getName()+ " age: "+ arrL.get(i).getAge()+ " salary: "+ arrL.get(i).getSalary());
                System.out.println();
               
            }
        }
     
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            SortStaff st = new SortStaff();
            int ichoice =0;
            s = new Scanner(System.in);
            do {
                System.out.println("1. Add staff");
                System.out.println("2. Sort by name");
                System.out.println("3. Sort by salary");
                System.out.println("4. Exit");
                System.out.print("Input your choice: ");
                ichoice = s.nextInt();
                switch (ichoice) {
                case 1:
                        st.addStaff();
                    break;
                case 2:
                        st.sortName();
                    break;
                case 3:
                        st.sortSalary();
                    break;
                case 4:
                   
                    break;
     
                default:
                    System.out.println("Not correct! Please try again!");
                    break;
                }
            } while (ichoice!=4);
     
        }
     
    }
     
    class Staff {
        private String name;
        private int age;
        private int salary;
     
        public String getName() {
            return name;
        }
     
        public void setName(String name) {
            this.name = name;
        }
     
        public int getAge() {
            return age;
        }
     
        public void setAge(int age) {
            this.age = age;
        }
     
        public int getSalary() {
            return salary;
        }
     
        public void setSalary(int salary) {
            this.salary = salary;
        }
     
    }
    
  16. haizax

    haizax New Member

    Show Spoiler

    PHP:
    //- Nhập dữ liệu danh sách nhân viên trong công ty.
    //Các phần tử trong danh sách có các thuộc tính họ tên, năm sinh, lương. Các thuộc tính để private.
    //- Viết chương trình nhập dữ liệu từ bàn phím thông tin số nhân viên, thông tin từng nhân viên.
    //Cuối chương trình có menu chọn.
    //+ Nếu ấn 1 thì sắp xếp theo thứ tự tên a, b, c. In danh sách ra màn hình.
    //+ Nếu ấn 2 thì sắp xếp theo mức lương giảm dần từ người cao xuống người thấp. In danh sách ra màn hình.
    package bai35;
     
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Scanner;
     
    class 
    NhanVien{
        private 
    String ten;
        private 
    int namSinh;
        private 
    double luong;
     
        public 
    String getTen() {
            return 
    ten;
        }
     
        public 
    int getNamSinh() {
            return 
    namSinh;
        }
     
        public 
    double getLuong() {
            return 
    luong;
        }
     
        public 
    void setTen(String ten) {
            
    this.ten ten;
        }
     
        public 
    void setNamSinh(int namSinh) {
            
    this.namSinh namSinh;
        }
     
        public 
    void setLuong(double luong) {
            
    this.luong luong;
        }
       
       
    }
    public class 
    Bai35 {
     
     
        public static 
    void main(String[] args) {
            
    Scanner in = new Scanner(System.in);
            
    ArrayList<NhanViendanhSach = new ArrayList();
           
            
    System.out.println("Số nhần viên cần nhập: ");
            
    int n in.nextInt();
           
            for (
    int i 0ni++) {
                
    in.nextLine();
                
    NhanVien x = new NhanVien();
                
    System.out.println("Nhập thông tin sinh viên thứ "+(i+1)+" là: ");
                
    System.out.println("Nhập tên: ");
                
    String tenX in.nextLine();
                
    System.out.println("Nhập năm sinh: ");
                
    int namSinhX in.nextInt();
                
    System.out.println("Nhập lương: ");
                
    double LuongX in.nextDouble();
               
                
    x.setTen(tenX);
                
    x.setNamSinh(namSinhX);
                
    x.setLuong(LuongX);
                
    danhSach.add(x);
            }
            
    System.out.println("Nhập cách mà bạn muốn sắp xếp (1/2) : ");
            
    int a in.nextInt();
            switch(
    a){
                case 
    1:
                    
    Collections.sort(danhSach,new Comparator<NhanVien>() {
     
                @
    Override
                
    public int compare(NhanVien o1NhanVien o2) {
                    return 
    o1.getTen().compareTo(o2.getTen());
                }
            });
                case 
    2:
                    
    Collections.sort(danhSach,new Comparator<NhanVien>() {
     
                @
    Override
                
    public int compare(NhanVien o1NhanVien o2) {
                    if(
    o1.getLuong()<o2.getLuong()){
                        return 
    1;
                    }else{
                        if(
    o1.getLuong()==o2.getLuong()){
                            return 
    0;
                        }else{
                            return -
    1;
                        }
                    }
                }
            });
        }
            
    System.out.println("Danh sách nhân viên sau khi sắp xếp: ");
            for (
    int i 0danhSach.size(); i++) {
                
    System.out.println("Nhân viên thứ "+(i+1)+" là: ");
                
    System.out.println("Tên nhân viên: "+danhSach.get(i).getTen()+"\nNăm sinh: "+danhSach.get(i).getNamSinh()+"\nLương: "+danhSach.get(i).getLuong());
            }
        }
    }
    hoale1993 thích bài này.
  17. phamtuan6996

    phamtuan6996 New Member

    Bây giờ muốn sắp xếp các phần tử trong mảng theo thứ tự giẩm dần thì làm thế nào ạ, e mới học java, chưa học qua gì về cntt, mọi người giúp đỡ e với ạ, cảm ơn m,n nhiều
    import java.io.*;


    public class Btmang5 {


    public static void main(String[] args) {

    int a[]={3,5,67};
    int max;
    max=a[0];


    for (int i=0; i<a.length; i++)
    {
    if (max< a)
    max=a;

    }
    System.out.println(" So lon nhat trong mang la: " +max);
    for( int k=0; k<a.length; k++)
    if(max==a[k])
    System.out.println("a["+k+"])="+a[k]);

    }
    }
  18. chiennv

    chiennv New Member

    Bài của bạn
    Show Spoiler

    Mã:
    /**
    *
    */
    package test;
     
    /**
    * @author Chienbk
    *
    */
    public class XapXep {
     
        /**
        * @param args
        *            Xap xep theo thu tu giam dan
        */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int[] a = { 3, 5, 7, 6, 4, 1 };
            int m;
            // In ra mang truoc khi xap xep
            System.out.println("Mang truoc khi xap xep");
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + "\t");
            }
            for (int i = 0; i < a.length - 1; i++) {
                for (int j = i+1; j < a.length; j++) {
                    // Dao vi tri neu a[i] < a[j]
                    if (a[i] < a[j]) {
                        m = a[i];
                        a[i] = a[j];
                        a[j] = m;
     
                    }
                }
     
            }
            System.out.println();
            // In ra mang sau khi xap xep
            System.out.println("Mang sau khi xap xep");
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + "\t");
            }
     
        }
     
    }
    
    phamtuan6996 thích bài này.
  19. chinhdc

    chinhdc New Member

    Mọi người cho ý kiến ạ!
    Show Spoiler

    PHP:
    package vidudemo;
     
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Scanner;
     
    class 
    NhanVien{
        private 
    String hoten;
        private 
    String namsinh;
        private 
    long luong;
     
        public 
    void setHoten(String hoten){
            
    this.hoten=hoten;
        }
        public 
    String getTen(){
            return 
    hoten;
        }
        public 
    void setNamsinh(String namsinh){
            
    this.namsinh=namsinh;
        }
        public 
    String getNamsinh(){
            return 
    namsinh;
        }
        public 
    void setLuong(long luong){
            
    this.luongluong;
        }
        public 
    long getLuong(){
            return 
    luong;
        }
    }
    public class 
    SapXep1 {
        public static 
    void main(String [] args){
            
    ArrayList<NhanViendanhsach = new ArrayList();
            
    Scanner sc = new Scanner(System.in);
            
    System.out.println("Nhap So Luong Nhan Vien: ");
            
    int n sc.nextInt();
     
            for(
    int i=0i<ni++){
                
    NhanVien x = new NhanVien();
                
    sc.nextLine();
                
    System.out.println("Nhap Thong Tin Nhan Vien "+i+" :");
                
    System.out.println("Nhap Ho Ten Nhan Vien: ");
                
    String tenX =sc.nextLine();
                
    System.out.println("Nhap Nam Sinh Nhan Vien: ");
                
    String namsinhXsc.nextLine();
                
    System.out.println("Nhap Luong Nhan Vien: ");
                
    long luongX sc.nextLong();
                
    x.setHoten(tenX);
                
    x.setNamsinh(namsinhX);
                
    x.setLuong(luongX);
                
    danhsach.add(x);
            }
            
    System.out.println("Chon Chuc Nang");
            
    System.out.println("1: Sap Xep Danh Sach Nhan Vien");
            
    System.out.println("2: Sap Xep Luong Nhan Vien");
            
    int chonsc.nextInt();
                switch(
    chon){
                    case 
    1: {
                        
    Collections.sort(danhsach, new Comparator<NhanVien>(){
                            @
    Override
                            
    public int compare(NhanVien nv1NhanVien nv2) {
                                return (
    nv1.getTen().compareTo(nv2.getTen()));
                            }
                        });
                        
    System.out.println("Danh Sach Nhan Vien: ");
                        for(
    int i=0i<danhsach.size(); i++){
                            
    System.out.println("Ho Ten: "danhsach.get(i).getTen() +"  Nam Sinh: "danhsach.get(i).getNamsinh() +"  Luong: " danhsach.get(i).getLuong());
                        }
                    }
                        break;
                    case 
    2: {
                        
    Collections.sort(danhsach, new Comparator<NhanVien>(){
     
                            @
    Override
                            
    public int compare(NhanVien sv1NhanVien sv2) {
                              if(
    sv1.getLuong()>sv2.getLuong()){
                                  return -
    1;
                              }else{
                                  if(
    sv1.getLuong()==sv2.getLuong()){
                                      return 
    0;
                                  }else{
                                      return 
    1;
                                  }
                              }
                            }
                    });
                    
    System.out.println("Danh Sach Nhan Vien: ");
                    for(
    int i=0i<danhsach.size(); i++){
                        
    System.out.println("Ho Ten: "danhsach.get(i).getTen() + "  Nam Sinh: "danhsach.get(i).getNamsinh() +"  Luong: " danhsach.get(i).getLuong());
                        }
                        break;
                    }
                    default: 
    System.out.println("Chon sai chuc nang!");
            }
      }
    }
  20. hanhnv87

    hanhnv87 New Member

    Đây là bài của mình, mong các bạn góp ý: :D

    Show Spoiler

    PHP:
    package com.hanhnv.bai36;
     
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Scanner;
     
    public class 
    HomeWorkUnit36 {
        private 
    ArrayList<StafflistStaff;
     
        public static 
    void main(String[] args) {
     
            
    HomeWorkUnit36 hw36 = new HomeWorkUnit36();
            
    Scanner s = new Scanner(System.in);
     
            
    int choice 0;
            do {
                
    System.out.println("          MENU        ");
                
    System.out.println("1. Input staff information. ");
                
    System.out.println("2. Sort staff by salary. ");
                
    System.out.println("3. Sort staff by alphabet. ");
                
    System.out.println("4. Exit.");
     
                
    System.out.println("Please select your choice: ");
                
    choice s.nextInt();
     
                switch (
    choice) {
                case 
    1:
                    
    hw36.inputMember();
                    break;
                case 
    2:
                    
    hw36.sortBySalary();
                    break;
                case 
    3:
                    
    hw36.sortByAlphabet();
                    break;
                case 
    4:
                    
    System.exit(0);
                    break;
                default:
                    
    System.out.println("Your choice not correct! Please try agian");
                }
            } while (
    choice != 4);
     
        }
     
        public 
    void inputMember() {
            
    listStaff = new ArrayList();
     
            
    Scanner s = new Scanner(System.in);
            
    System.out.println("Enter number of staff in your department: ");
            
    int n s.nextInt();
     
            for (
    int i 0ni++) {
                
    Staff staff = new Staff();
                
    System.out.println("Enter detail information about staff number "
                        
    + (1) + ": ");
                
    s.nextLine();
     
                
    System.out.println("Enter full name: ");
                
    String fn s.nextLine();
                
    System.out.println("Enter birthday: ");
                
    int bd s.nextInt();
                
    System.out.println("Enter salary: ");
                
    int sal s.nextInt();
                
    staff.setName(fn);
                
    staff.setBirthday(bd);
                
    staff.setSalary(sal);
                
    listStaff.add(staff);
            }
     
        }
     
        public 
    void sortBySalary() {
     
            
    Collections.sort(listStaff, new Comparator<Staff>() {
     
                @
    Override
                
    public int compare(Staff s1Staff s2) {
                    if (
    s1.getSalary() < s2.getSalary()) {
                        return 
    1;
                    } else {
                        if (
    s1.getSalary() == s2.getSalary()) {
                            return 
    0;
                        } else {
                            return -
    1;
                        }
                    }
                }
            });
            
    System.out.println("\nList of staff after sort by salary: ");
            for (
    int i 0listStaff.size(); i++) {
                
    System.out.println("Full name: " listStaff.get(i).getName()
                        + 
    ", Birthday: " listStaff.get(i).getBirthday()
                        + 
    ", Salary: " listStaff.get(i).getSalary());
            }
        }
     
        public 
    void sortByAlphabet() {
            
    Collections.sort(listStaff, new Comparator<Staff>() {
     
                @
    Override
                
    public int compare(Staff s1Staff s2) {
                    return (
    s1.getName().compareToIgnoreCase(s2.getName()));
                }
     
            });
            
    System.out.println("\nList of staff after sort by alphabet: ");
            for (
    int i 0listStaff.size(); i++) {
                
    System.out.println("Full name: " listStaff.get(i).getName()
                        + 
    ", Birthday: " listStaff.get(i).getBirthday()
                        + 
    ", Salary: " listStaff.get(i).getSalary());
            }
     
        }
     
    }
     
    class 
    Staff {
        private 
    String fullName;
        private 
    int birthdaysalary;
     
        public 
    String getName() {
            return 
    fullName;
        }
     
        public 
    void setName(String name) {
            
    this.fullName name;
        }
     
        public 
    int getBirthday() {
            return 
    birthday;
        }
     
        public 
    void setBirthday(int birthday) {
            
    this.birthday birthday;
        }
     
        public 
    int getSalary() {
            return 
    salary;
        }
     
        public 
    void setSalary(int salary) {
            
    this.salary salary;
        }
    }

Chia sẻ trang này