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));
}
}
Xin chào
Trả lờiXóaXin cảm ơn những bài học Java rất hay của Tùng.
Trả lờiXóaCho 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
bạn xem lạo lớp sinh viên thử nhé
Xóapublic class Test {
Xóapublic 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));
}
}
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óaNhận xét này đã bị tác giả xóa.
XóaBạn thêm Generate toString() trong class SinhVien là được nhé
Xóamình cũng y chang thế
Trả lờiXóa// tạo lớp sinh viên
Trả lờiXóapackage 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));
}
}