String.contentEquals în Java

Compară textul șirului cu orice CharSequence (StringBuilder, StringBuffer etc.), indiferent de tip.

Sintaxă
boolean contentEquals(CharSequence cs)   // Java 5
boolean contentEquals(StringBuffer sb)

Ce face String.contentEquals

equals returnează true doar dacă celălalt obiect este tot un String. Un StringBuilder cu același text dă false. contentEquals compară doar caracterele, pentru orice CharSequence: String, StringBuilder, StringBuffer, CharBuffer.

Este util când construiești un text cu StringBuilder și vrei să îl compari cu un șir fără să apelezi toString() (care ar crea un obiect nou).

Parametri

Parametru Descriere
cs / sb Secvența de caractere comparată.

Ce returnează

true dacă secvența are exact aceleași caractere, în aceeași ordine.

Exemple

Exemplul 1: equals vs contentEquals cu StringBuilder

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("Ia").append("și");
        String oras = "Iași";
        System.out.println(oras.equals(sb));
        System.out.println(oras.contentEquals(sb));
        System.out.println(oras.equals(sb.toString()));
    }
}

Rezultat

false
true
true

Exemplul 2: Verificarea unui palindrom

Inversăm textul cu StringBuilder.reverse() și îl comparăm direct cu originalul.

public class Main {
    static boolean palindrom(String s) {
        String curat = s.toLowerCase().replace(" ", "");
        return curat.contentEquals(new StringBuilder(curat).reverse());
    }

    public static void main(String[] args) {
        System.out.println(palindrom("Ele fac cafele"));
        System.out.println(palindrom("Cojocaru"));
        System.out.println(palindrom("rotor"));
    }
}

Rezultat

true
false
true

Greșeli frecvente

  • Compari un String cu un StringBuilder folosind equals și primești mereu false. Folosește contentEquals sau sb.toString().

Comenzi înrudite

  • String.equals: Verifică dacă două șiruri au exact același text; equalsIgnoreCase și equalsFoldCase ignoră literele mari/mici.
  • StringBuilder: Un text care se poate modifica pe loc: adaugi, inserezi și ștergi fără să creezi un șir nou la fiecare pas.
  • StringBuilder.reverse: Inversează ordinea caracterelor din StringBuilder, pe loc.