Trong bài viết này, chúng ta sẽ tìm hiểu cách so sánh hai chuỗi bằng cách tự triển khai logic so sánh (không dùng compareTo). So sánh có thể dùng toán tử == nhưng đây là so sánh tham chiếu. Chuỗi là dãy ký tự, trong Java được xử lý như đối tượng.
Ví dụ minh họa
Đầu vào:
Chuỗi 1: Java Program Chuỗi 2: Java
Đầu ra mong muốn:
Kết quả so sánh: 8
Thuật toán
- Bắt đầu
- Khai báo hai chuỗi
- Tính độ dài, tìm độ dài nhỏ nhất
- Duyệt qua độ dài nhỏ nhất, so sánh từng ký tự (chuyển sang int)
- Nếu khác nhau, trả về chênh lệch
- Nếu hết vòng lặp mà chưa khác, trả về chênh lệch độ dài
- Hiển thị kết quả
- Kết thúc
Ví dụ 1: Xử lý trực tiếp trong main
public class CompareStrings {
public static void main(String args[]) {
String input_string_1 = new String("Java Program");
System.out.println("Chuỗi 1: " + input_string_1);
String input_string_2 = new String("Java");
System.out.println("Chuỗi 2: " + input_string_2);
int length_1 = input_string_1.length();
int length_2 = input_string_2.length();
int minimum_length = Math.min(length_1, length_2);
int result = 0;
for (int i = 0; i < minimum_length; i++) {
int character_1 = (int) input_string_1.charAt(i);
int character_2 = (int) input_string_2.charAt(i);
if (character_1 != character_2) {
result = character_1 - character_2;
break;
}
}
if (result == 0 && length_1 != length_2) {
result = length_1 - length_2;
}
System.out.println("\nKết quả so sánh: " + result);
}
}
Kết quả
Chuỗi 1: Java Program Chuỗi 2: Java Kết quả so sánh: 8
Ví dụ 2: Sử dụng phương thức tách biệt (OOP)
public class CompareStrings {
public static int string_compare(String input_string_1, String input_string_2) {
int length_1 = input_string_1.length();
int length_2 = input_string_2.length();
int minimum_length = Math.min(length_1, length_2);
for (int i = 0; i < minimum_length; i++) {
int character_1 = (int) input_string_1.charAt(i);
int character_2 = (int) input_string_2.charAt(i);
if (character_1 != character_2) {
return character_1 - character_2;
}
}
if (length_1 != length_2) {
return length_1 - length_2;
}
return 0;
}
public static void main(String args[]) {
String input_string_1 = new String("Java Program");
System.out.println("Chuỗi 1: " + input_string_1);
String input_string_2 = new String("Java");
System.out.println("Chuỗi 2: " + input_string_2);
System.out.println("\nKết quả so sánh: " + string_compare(input_string_1, input_string_2));
}
}
Kết quả
Chuỗi 1: Java Program Chuỗi 2: Java Kết quả so sánh: 8