So sánh 2 chuỗi trong Java

String là một chuỗi các ký tự trong Java, nó là các imutable object nghĩa là chúng ta sẽ không thể thay đổi sau khi khởi tạo. Để so sánh 2 chuỗi trong Java chúng ta có các cách sau

Tự định nghĩa

Đây là phương án hay nếu bạn là người mới bắt đầu học lập trình cũng như ngôn ngữ Java. Cách so sánh được mô tả như sau:

  1. Nếu (string1 > string2) trả về 1.
  2. Nếu cả 2 bằng nhau
    i.e.(string1 == string2) trả về 0.
  3. Nếu (string1 < string2) trả về -1.
class GFG {

    // This method compares two strings
    // lexicographically without using
    // library functions
    public static int stringCompare(String str1, String str2) {

        int l1 = str1.length();
        int l2 = str2.length();
        int lmin = Math.min(l1, l2);

        for (int i = 0; i < lmin; i++) {
            int str1_ch = (int) str1.charAt(i);
            int str2_ch = (int) str2.charAt(i);

            if (str1_ch != str2_ch) {
                return str1_ch - str2_ch;
            }
        }

        if (l1 != l2) {
            return l1 - l2;
        }

        // If none of the above conditions is true,
        // it implies both the strings are equal
        else {
            return 0;
        }
    }

    // Driver function to test the above program
    public static void main(String args[]) {
        String string1 = new String("Deft");
        String string2 = new String("Practice");
        String string3 = new String("Blog");
        String string4 = new String("Blog");

        
        System.out.println("Comparing " + string1 + " and " + string2
                + " : " + stringCompare(string1, string2));

       
        System.out.println("Comparing " + string3 + " and " + string4
                + " : " + stringCompare(string3, string4));

        
        System.out.println("Comparing " + string1 + " and " + string4
                + " : " + stringCompare(string1, string4));
    }
}

Output

Comparing Deft and Practice : -12
Comparing Blog and Blog : 0
Comparing Deft and Blog : 2

Sử dụng String.equals()

Hàm String.equals() được sử dụng để so sánh bằng 2 string với nhau. Nếu nội dung của 2 chuỗi giống nhau thì nó sẽ trả về TRUE ngược lại FALSE.

class GFG {
    public static void main(String args[])
    {
        String string1 = new String("Deft");
        String string2 = new String("Practice");
        String string3 = new String("Blog");
        String string4 = new String("Blog");
        String string5 = new String("Blog");

        
        System.out.println("Comparing " + string1 + " and " + string2
                + " : " + string1.equals(string2));

        
        System.out.println("Comparing " + string3 + " and " + string4
                + " : " + string3.equals(string4));

        
        System.out.println("Comparing " + string4 + " and " + string5
                + " : " + string4.equals(string5));

        
        System.out.println("Comparing " + string1 + " and " + string4
                + " : " + string1.equals(string4));
    }
} 

Output

Comparing Deft and Practice : false
Comparing Blog and Blog : true
Comparing Blog and Blog : true
Comparing Deft and Blog : false

Sử dụng String.equalsIgnoreCase()

Hàm String.equalsIgnoreCase() được sử dụng để so sánh bằng 2 string với nhau, nó khác với String.equalsIgnoreCase() là nó không phân biệt chữ hoa thường.

class GFG {
    public static void main(String args[])
    {
        String string1 = new String("Deft");
        String string2 = new String("Practice");
        String string3 = new String("Blog");
        String string4 = new String("blog");
        String string5 = new String("Blog");

        System.out.println("Comparing " + string1 + " and " + string2
                + " : " + string1.equalsIgnoreCase(string2));

        System.out.println("Comparing " + string3 + " and " + string4
                + " : " + string3.equalsIgnoreCase(string4));

        System.out.println("Comparing " + string4 + " and " + string5
                + " : " + string4.equalsIgnoreCase(string5));

        System.out.println("Comparing " + string1 + " and " + string4
                + " : " + string1.equalsIgnoreCase(string4));
    }
} 

Output

Comparing Deft and Practice : false
Comparing Blog and blog : true
Comparing blog and Blog : true
Comparing Deft and blog : false

Sử dụng compareTo

Hàm này được sử dụng tương tự như cách 1 chúng ta tự định nghĩa

  1. Nếu (string1 > string2) trả về 1.
  2. Nếu cả 2 bằng nhau
    i.e.(string1 == string2) trả về 0.
  3. Nếu (string1 < string2) trả về -1.
class GFG {
    public static void main(String args[]) {
        String string1 = new String("Deft");
        String string2 = new String("Practice");
        String string3 = new String("Blog");
        String string4 = new String("Blog");

        System.out.println("Comparing " + string1 + " and " + string2
                + " : " + string1.compareTo(string2));


        System.out.println("Comparing " + string3 + " and " + string4
                + " : " + string3.compareTo(string4));


        System.out.println("Comparing " + string1 + " and " + string4
                + " : " + string1.compareTo(string4));
    }
} 

Output

Comparing Deft and Practice : -12
Comparing Blog and Blog : 0
Comparing Deft and Blog : 2

Sử dụng Object.equals()

Object.equals(Object a, Object b) trả về true nếu 2 tham số đầu vào bằng nhau, ngược lại false. 

import java.util.Objects;

class GFG {
    public static void main(String args[]) {
        String string1 = new String("Deft");
        String string2 = new String("Blog");
        String string3 = new String("Blog");
        String string4 = null;
        String string5 = null;

        System.out.println("Comparing " + string1 + " and " + string2
                + " : " + Objects.equals(string1, string2));

        System.out.println("Comparing " + string2 + " and " + string3
                + " : " + Objects.equals(string2, string3));

        System.out.println("Comparing " + string1 + " and " + string4
                + " : " + Objects.equals(string1, string4));

        System.out.println("Comparing " + string4 + " and " + string5
                + " : " + Objects.equals(string4, string5));
    }
} 

Nguồn tham khảo

https://www.geeksforgeeks.org/compare-two-strings-in-java/?ref=leftbar-rightbar

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x