Java programatzailea bazara, ziurrenik String objektuak konparatzeko equals() metodoa erabili izan duzu milaka aldiz. Baina, ba al dakizu contentEquals() izeneko beste metodo bat dagoela?
Nahiz eta biak edukiak konparatzeko diseinatu diren, funtsezko ezberdintasun bat dago, batez ere String ez diren beste karaktere sekuentzia batzuekin lan egiten dugunean (adibidez, StringBuilder edo StringBuffer).
Ikus dezagun zein den haien arteko aldea eta noiz erabili behar duzun bakoitza.
1. String.equals(Object anObject): Muga Zorrotza
equals() metodoa Object klasetik heredatua da, eta String klaseak gainidatzi egiten du karaktere-sekuentziak konparatzeko. Hala ere, bi baldintza zorrotz betetzen ditu:
- Mota-Egiaztapena: Lehenik eta behin, konparatzen den objektua (anObject) String motako instantzia bat den egiaztatzen du.
- Eduki-Egiaztapena: String bat bada, orduan karaktere sekuentzia berdinak dituzten konparatzen du.
Funtsezko Kontua: Objektua String bat ez bada (adibidez, StringBuilder bat pasatzen badiozu), equals() metodoak berehala itzuliko du false, edukia berdinak izan arren.
Adibidea equals() erabiliz:
String a = "kaixo";
StringBuilder b = new StringBuilder("kaixo");
System.out.println(a.equals(b)); // Emaitza: false
Zergatik? b ez delako String motakoa.
2. String.contentEquals(CharSequence cs): Malgutasun Handiagoa
contentEquals() metodoa, berriz, askoz malguagoa da, CharSequence interfazea inplementatzen duen edozein objektu onartzen baitu. String klaseak, StringBuilder klaseak eta StringBuffer klaseak, besteak beste, inplementatzen dute interfaze hori.
Funtsezko Kontua: Metodo honek edukiaren konparazioa soilik du helburu. Ez zaio axola pasatutako objektuaren klasea zein den, beti ere karaktere sekuentzia bat bada.
Oharra Garrantzitsua: contentEquals()-i String bat pasatzen bazaio, barnean equals() deitzen du.
Adibidea contentEquals() erabiliz:
String a = "kaixo";
StringBuilder b = new StringBuilder("kaixo");
System.out.println(a.contentEquals(b)); // Emaitza: true
Zergatik? Edukiak berdinak direlako, nahiz eta motak desberdinak izan.
Laburpena eta Gomendioa
| Ezaugarria | equals(Object) | contentEquals(CharSequence) |
| Konparatzen du | String beste String batekin. | String beste CharSequence (String, StringBuilder, etab.) batekin. |
| Mota-Egiaztapena | Bai, String izan behar du. | Ez, edukia soilik konparatzen du. |
| Malgutasuna | Murriztua | Handia |
Zein erabili?
- Bi String objektu konparatu behar badituzu: Erabili equals(). Argiagoa eta ohikoena da Java-n.
- String bat StringBuilder edo StringBuffer bezalako karaktere sekuentzia batekin konparatu behar baduzu: Erabili contentEquals(). Horrela, ez duzu alferrikako .toString() deirik egin beharko, eta errendimendu aldetik eraginkorragoa izan daiteke.
Aukeratu beti zure egoerarako egokiena den metodoa! Galderarik baduzu? Utzi iruzkin bat behean.
댓글