Java 55. Tìm kiếm, sắp xếp, copy mảng bằng các hàm có sẵn trong Java



    Bản quyền thuộc về TITV.vn, 
    vui lòng không đăng tải lại nội dung từ trang này.

    Video giải thích chi tiết


     Code chi tiết 

    
    
    

    package viDu;


    public class SinhVien implements Comparable<SinhVien> {

    private int maSinhVien;

    private String hoVaTen;

    private String tenLop;

    private double diemTrungBinh;

    public SinhVien(int maSinhVien, String hoVaTen, String tenLop, double diemTrungBinh) {

    this.maSinhVien = maSinhVien;

    this.hoVaTen = hoVaTen;

    this.tenLop = tenLop;

    this.diemTrungBinh = diemTrungBinh;

    }


    public int getMaSinhVien() {

    return maSinhVien;

    }


    public void setMaSinhVien(int maSinhVien) {

    this.maSinhVien = maSinhVien;

    }


    public String getHoVaTen() {

    return hoVaTen;

    }


    public void setHoVaTen(String hoVaTen) {

    this.hoVaTen = hoVaTen;

    }


    public String getTenLop() {

    return tenLop;

    }


    public void setTenLop(String tenLop) {

    this.tenLop = tenLop;

    }


    public double getDiemTrungBinh() {

    return diemTrungBinh;

    }


    public void setDiemTrungBinh(double diemTrungBinh) {

    this.diemTrungBinh = diemTrungBinh;

    }


    public String getTen() {

    String s = this.hoVaTen.trim();

    if(s.indexOf(" ")>=0) {

    int vt = s.lastIndexOf(" ");

    return s.substring(vt+1);

    }else {

    return s;

    }

    }

    @Override

    public String toString() {

    return "SinhVien [maSinhVien=" + maSinhVien + ", hoVaTen=" + hoVaTen + ", tenLop=" + tenLop + ", diemTrungBinh="

    + diemTrungBinh + "]";

    }


    @Override

    public int compareTo(SinhVien o) {

    // <0

    // =0

    // >0

    // Dua tren so sanh ten

    // Ten: Adam, Barack Obama,     Nguyen Van A     , Tran Thi Thanh Yen

    String tenThis = this.getTen();

    String tenO=o.getTen();

    return tenThis.compareTo(tenO);

    }

    }

    package viDu;


    import java.util.Arrays;

    import java.util.Collections;


    public class Test {

    public static int[] reverse(int[] x) {

    int[] rs = new int[x.length];

    int index=0;

    for(int i=x.length-1; i>=0; i--) {

    rs[index]=x[i];

    index++;

    }

    return rs;

    }

    public static void main(String[] args) {

    int[] a = new int[] { 1, 8, 2, 6, 4, 3, 7, 9 };

    int[] b = new int[15];


    //

    System.out.println("a ban đầu: " + Arrays.toString(a));


    // Hàm sắp xếp tăng dần

    Arrays.sort(a);

    System.out.println("a sau khi sắp xếp: " + Arrays.toString(a));


    // Hàm tìm kiếm

    System.out.println(Arrays.binarySearch(a, 4));

    System.out.println(Arrays.binarySearch(a, -1));


    // Hàm điền giá trị

    Arrays.fill(b, 5);

    System.out.println("b sau khi điền giá trị: " + Arrays.toString(b));


    // Hàm sắp xếp giảm dần

    Arrays.sort(a);

    a = Test.reverse(a);

    System.out.println("a sau khi sắp xếp giảm dần: " + Arrays.toString(a));

    }

    }

    package viDu;


    import java.util.Arrays;


    public class Test2 {

    public static void main(String[] args) {

    SinhVien sv1 =new SinhVien(150, "Tran Van Thanh", "Lop 1", 9);

    SinhVien sv2 =new SinhVien(100, "Nguyen Thi Thanh Hoa", "Lop 2", 8);

    SinhVien sv3 =new SinhVien(199, "Nguyen Van An", "Lop 2", 8);

    SinhVien sv4 =new SinhVien(199, "Nguyen Van Binh", "Lop 2", 8);

    SinhVien[] a_sv = new SinhVien[]{sv1, sv2, sv3};

    System.out.println("Ban đầu: "+Arrays.toString(a_sv));

    // Hàm sắp xếp

    Arrays.sort(a_sv);

    System.out.println("Sau khi sắp xếp: "+Arrays.toString(a_sv));

    // Tìm kiếm

    System.out.println("Tìm kiếm An: "+ Arrays.binarySearch(a_sv, sv1));

    System.out.println("Tìm kiếm Binh: "+ Arrays.binarySearch(a_sv, sv4));

    }

    }

    Bạn có thể thích những bài đăng này:

    9 nhận xét:

    1. Xin cảm ơn những bài học Java rất hay của Tùng.
      Cho mình hỏi chút, trong bài 55, mình cũng làm không khác gì Tùng nhưng kết quả xuất ra các Mảng không phải là các phần tử trong mản, mà ra dạng như bên dưới:

      Ban đầu: [viDu.SinhVien@1c4af82c, viDu.SinhVien@379619aa, viDu.SinhVien@cac736f]
      Sau khi sắp xếp: [viDu.SinhVien@cac736f, viDu.SinhVien@379619aa, viDu.SinhVien@1c4af82c]
      Tìm kiếm An 2
      Tìm kiếm Bình -2

      Trả lờiXóa
      Trả lời
      1. bạn xem lạo lớp sinh viên thử nhé

        Xóa
      2. public class Test {
        public static void main(String[] args) {
        SinhVien sv1 = new SinhVien(150, "Tran Van Thanh", "Java", 6.5);
        SinhVien sv2 = new SinhVien(100, "Nguyen Thi Thanh Hoa", "Java", 7.0);
        SinhVien sv3 = new SinhVien(199, "Nguyen Van An", "Java", 7.0);

        SinhVien[] a_sv = new SinhVien[] {sv1, sv2, sv3};

        System.out.println("Ban đầu: " + Arrays.toString(a_sv));
        //hàm sắp xếp
        Arrays.sort(a_sv);
        System.out.println("Sau khi săp xếp: " + Arrays.toString(a_sv));

        }
        }

        Xóa
      3. Do lúc coppy lớp sinh viên, chương trình tự import lớp Sinh Viên của bài trước, bạn xóa import đi và viết lại như trên thì hết lỗi nhé

        Xóa
      4. Nhận xét này đã bị tác giả xóa.

        Xóa
      5. Bạn thêm Generate toString() trong class SinhVien là được nhé

        Xóa
    2. // tạo lớp sinh viên
      package bai55;

      public class SinhVien implements Comparable {
      private int maSinhVien;
      private String hoVaTen;
      private String tenLop;
      private double diemTrungBinh;

      public SinhVien(int maSinhVien, String hoVaTen, String tenLop, double diemTrungBinh) {
      this.maSinhVien = maSinhVien;
      this.hoVaTen = hoVaTen;
      this.tenLop = tenLop;
      this.diemTrungBinh = diemTrungBinh;
      }

      public int getMaSinhVien() {
      return maSinhVien;
      }

      public void setMaSinhVien(int maSinhVien) {
      this.maSinhVien = maSinhVien;
      }

      public String getHoVaTen() {
      return hoVaTen;
      }

      public void setHoVaTen(String hoVaTen) {
      this.hoVaTen = hoVaTen;
      }

      public String getTenLop() {
      return tenLop;
      }

      public void setTenLop(String tenLop) {
      this.tenLop = tenLop;
      }

      public double getDiemTrungBinh() {
      return diemTrungBinh;
      }

      public void setDiemTrungBinh(double diemTrungBinh) {
      this.diemTrungBinh = diemTrungBinh;
      }

      public String getTen() {
      String s = this.hoVaTen.trim();
      if (s.indexOf(" ") >= 0) {
      int vt = s.lastIndexOf(" ");
      return s.substring(vt+1);
      } else {
      return s;
      }
      }

      @Override
      public String toString() {
      return "SinhVien{" +
      "maSinhVien=" + maSinhVien +
      ", hoVaTen='" + hoVaTen + '\'' +
      ", tenLop='" + tenLop + '\'' +
      ", diemTrungBinh=" + diemTrungBinh +
      '}';
      }

      @Override
      public int compareTo(SinhVien o) {
      String tenThis = this.getTen();
      String tenO = o.getTen();
      return tenThis.compareTo(tenO);
      }
      }

      // tạo lớp test1
      public class Test1 {
      public static int[] reverse(int[] x) {
      int[] rs = new int[x.length];
      int index = 0;
      for (int i = x.length - 1; i >= 0; i--) {
      rs[index] = x[i];
      index++;
      }
      return rs;
      }

      public static void main(String[] args) {
      int[] a = new int[] {1,8,2,6,4,3,7,9};
      int[] b = new int[15];

      System.out.println("Mảng a ban đầu: " + Arrays.toString(a));

      //sắp xếp mảng
      Arrays.sort(a);
      System.out.println("Mảng a sau khi sắp xếp: " + Arrays.toString(a));


      //hàm tìm kiếm
      System.out.println(Arrays.binarySearch(a, 4));
      System.out.println(Arrays.binarySearch(a, -1)); // ra kết quả sai, chỉ dùng binarySearch cho các mảng đã sắp xếp tăng dần sẵn

      //hàm điền giá trị
      Arrays.fill(b, 5); // mặc định sắp xếp từ nhỏ đến lớn
      System.out.println("Mảng b: " + Arrays.toString(b));

      //hàm sắp xếp giảm dần
      Arrays.sort(a);
      a = Test1.reverse(a);
      System.out.println("Mảng a sau khi sắp xếp giảm dần: " + Arrays.toString(a));
      }
      }

      //tạo lớp test2
      public class Test2 {
      public static void main(String[] args) {
      SinhVien sv1 = new SinhVien(150, "Tran Van Thanh", "Java", 6.5);
      SinhVien sv2 = new SinhVien(100, "Nguyen Thi Thanh Hoa", "Java", 7.0);
      SinhVien sv3 = new SinhVien(199, "Nguyen Van An", "Java", 7.0);
      SinhVien sv4 = new SinhVien(189, "Nguyen Van Binh", "Java", 7.0);

      SinhVien[] a_sv = new SinhVien[] {sv1, sv2, sv3};

      System.out.println("Ban đầu: " + Arrays.toString(a_sv));

      //hàm sắp xếp
      Arrays.sort(a_sv);
      System.out.println("Sau khi săp xếp: " + Arrays.toString(a_sv));

      //hàm tìm kiếm
      System.out.println("Tìm kiếm An: " + Arrays.binarySearch(a_sv, sv1));
      System.out.println("Tìm kiếm Bình: " + Arrays.binarySearch(a_sv, sv4));

      }
      }

      Trả lờiXóa