Kuinka vertailla kahta merkkijonoa Java
Menetelmรคt merkkijonojen vertailuun Java
Java tarjoaa erilaisia โโmenetelmiรค, joiden avulla voit verrata kahta merkkijonoa Java. Merkkijonojen vertailu sisรครคn Java on ominaisuus, joka sovittaa merkkijonon merkkijonoon.
Opi vertaamaan merkkijonoja Java, voit kรคyttรครค seuraavien luokkien tarjoamia menetelmiรค.
- String luokka alkaen Java.lang-paketti.
- Objects luokka alkaen Java.util-paketti.
- StringUtils-luokka paketista org.apache.commons.lang3.
Useimmat nรคistรค Java merkkijonojen vertailumenetelmissรค on ratkaisuja tapauksen huomiotta jรคttรคmiseen. Tรคssรค Java opetusohjelmassa opit erilaisia โโmenetelmiรค, joilla voit vertailla kahta merkkijonoa.
Tapa 1: String equals() -metodi
Java jono equals() -metodi vertaa kahta merkkijonoobjektia yhtรคlรคisten merkkijonoarvojen saamiseksi.
Syntaksi:
public boolean equals(Object anObject)
equals()-metodin parametrit:
anObject โ argumenttimerkkijono merkkijonojen vertailua varten.
equals()-metodin palautustyypit
- Palauttaa tosi, jos annettu merkkijonoliteraali on sama kuin ensimmรคinen merkkijono.
- Palauttaa epรคtosi, jos ensimmรคinen merkkijono ei ole sama kuin argumenttimerkkijono.
Esimerkiksi:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: "+stringOne.equals(stringTwo));
String stringThree = "GURU99";
System.out.println("is Guru99 equal to GURU99: "+stringOne.equals(stringThree));
}
}
Odotettu tuotos:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Selitys:
- Sait epรคtosi viimeisessรค tulosteessa, koska mรครคritetyllรค objektilla on eri kirjainkoko.
Huomautuksia: Kรคytรค merkkijono yhtรคsuuri -menetelmรครค kirjainkoolla eroteltuun merkkijonojen vertailuun. Kรคytรค "equalsIgnoreCase" -menetelmรครค merkkijonoobjektien vertaamiseen eri merkkijonoarvoilla.
Tapa 2: Objects equals() -metodi
Java Objektit yhtรค kuin () menetelmรค vertaa kahta merkkijonoobjektia selvittรครคkseen, onko niillรค samat arvot.
Syntaksi:
public static boolean equals(Object a, Object b)
equals()-metodin parametrit
a โ Argumenttimerkkijono ensimmรคiselle merkkijonoobjektille.
b โ Argumenttimerkkijono toiselle merkkijonoobjektille.
equals()-metodin palautustyypit
- Palauttaa tosi, jos merkkijonon literaalit ovat yhtรค suuret. Nolla-arvon vรคlittรคminen molemmissa argumenteissa palauttaa myรถs tosi.
- Palauttaa epรคtosi, jos merkkijonon literaalit eivรคt ole yhtรค suuret.
Esimerkiksi:
import java.util.Objects;
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringOne, stringTwo));
String stringThree = null;
String stringFour = null;
System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringThree, stringFour));
}
}
lรคhtรถ:
is Guru99 equal to Guru99: true is Guru99 equal to Guru99: true
Selitys:
Tรคstรค esimerkistรค voit nรคhdรค, ettรค tulos on totuusarvo, koska verratut merkkijonot ovat yhtรค suuret.
Menetelmรค 3: String vertaa() -menetelmรค
Java merkkijono vertaa() menetelmรค vertaa kahta merkkijonoa aakkosjรคrjestyksessรค. Sitรค kutsutaan yleensรค leksikografiseksi jรคrjestykseksi.
Syntaksi:
public int compareTo(String str)
vertaaTo()-menetelmรคn parametreja
str โ merkkijono, jota verrataan nykyiseen merkkijonoon.
vertaaTo()-menetelmรค palauttaa
- 0 โ Palauttaa nollan, jos mรครคritetty objekti on yhtรค suuri kuin nykyinen merkkijono.
- < 0 โ Palauttaa luvun, joka on pienempi kuin nolla, jos tรคmรค merkkijono on pienempi kuin mรครคritetty objekti.
- > 0 โ Palauttaa nollaa suuremman luvun, jos tรคmรค merkkijono ylittรครค annetun merkkijonon.
Esimerkiksi:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + stringOne.compareTo(stringTwo));
String stringThree = "GURU99";
// u = 117, U = 85, result = 117-85 = 32
System.out.println("is Guru99 equal to GURU99: " + stringOne.compareTo(stringThree));
}
}
Odotettu tuotos:
is Guru99 equal to Guru99: 0 is Guru99 equal to GURU99: 32
Selitys:
Ensimmรคinen tulos palauttaa arvon nolla, koska ensimmรคinen ja toinen merkkijono ovat samat.
Toinen tulos palauttaa arvon kolmekymmentรคkaksi, koska merkit ovat erilaisia.
Huomautus: Jos haluat ohittaa tapaukset, voit kรคyttรครค "compareToIgnoreCase" -menetelmรครค.
Tapa 4: StringUtils equals() -metodi
Java StringUtils equals() menetelmรค vertaa kahden merkkijonon yhtรคlรคisyyttรค.
Varmista, ettรค olet lisรคnnyt ohjelmaan kirjaston "org.apache.commons.lang3". Nรคin voit verrata merkkijonoja StringUtil-menetelmillรค.
Kรคytรค tรคtรค Maven-projekteissa ohjaavat lisรคtรคksesi kirjaston projektiin.
Jos kuitenkin haluat lisรคtรค kirjaston ilman rakennustyรถkaluja, kรคytรค tรคtรค ohjaavat.
Syntaksi:
public static boolean equals(CharSequnce cs1, CharSequence cs2)
StringUtils equals() -metodin parametrit
- cs1 โ Ensimmรคisen argumentin merkkijono.
- cs2 โ Toisen argumentin merkkijono.
StringUtils equals() -metodi palauttaa
- Palauttaa tosi, jos merkkijonovertailu on yhtรค suuri. Sitรค sovelletaan, jos vรคlitรคt nolla-arvon kahdessa argumentissa.
- Palauttaa epรคtosi, jos merkkijonovertailu ei ole yhtรค suuri.
Esimerkiksi:
import org.apache.commons.lang3.StringUtils;
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + StringUtils.equals(stringOne, stringTwo));
String stringThree = "GURU99";
System.out.println("is Guru99 equal to GURU99: " + StringUtils.equals(stringOne, stringThree));
}
}
lรคhtรถ:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Selitys:
Koska ensimmรคisen ja toisen merkkijonon sisรคltรถ on sama, tulos palauttaa tosi.
Voit kรคyttรครค "equalsIgnoreCase"-menetelmรครค kirjainkoon huomiotta jรคttรคmiseen.
Tapa 5: StringUtils equalsAny() -metodi
Java StringUtils equalsAny() menetelmรค tarkistaa, onko argumenteissa merkkijono.
Syntaksi:
public static boolean equalsAny(CharSequence string, Charsequenceโฆ searchStrings)
StringUtils equalsAny()-metodin parametrit
- merkkijono โ Ensimmรคisen argumentin merkkijonoarvo. Argumentilla voi myรถs olla nolla-arvo.
- searchStrings โ Joukko merkkijonoargumentteja, joiden avulla menetelmรค selvittรครค, onko ensimmรคinen argumenttimerkkijono olemassa.
StringUtils equalsAny() -metodi palauttaa
- Palauttaa tosi, jos vastaava merkkijono on hakumerkkijonojen muuttujamรครคrรคssรค. Tรคmรค pรคtee, jos molemmat argumentit ovat tyhjiรค.
- Palauttaa arvon false, jos vastaava merkkijono ei vastaa yhtรครคn merkkijonoa muuttujamรครคrรคssรค hakumerkkijonoja.
Esimerkiksi:
import org.apache.commons.lang3.StringUtils;
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String[] stringTwo = new String[] {
"Guru99",
"JavaGuru99"
};
System.out.println("is Guru99 available: " +
StringUtils.equalsAny(stringOne, stringTwo));
String[] stringThree = new String[] {
"GURU99",
"JavaGuru99"
};
System.out.println("is GURU99 available: " +
StringUtils.equalsAny(stringOne, stringThree));
}
}
lรคhtรถ:
is Guru99 available: true is GURU99 available: false
Selitys:
Koska ensimmรคisen ja toisen merkkijonon sisรคltรถ on yhtรค suuri, tulos palauttaa tosi. Voit kรคyttรครค "equalsAnyIgnoreCase" -menetelmรครค kirjainkoon huomiotta jรคttรคmiseen.
Tapa 6: Kรคytรค ==-operaattoria
Merkkijonojen ==-operaattori tarkistaa, onko objektiviittauksilla sama osoite.
Esimerkiksi:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 == to Guru99: " + (stringOne == stringTwo));
String stringThree = "GURU99";
System.out.println("is Guru99 == to GURU99: " + (stringOne == stringThree));
}
}
Odotettu tuotos:
is Guru99 == to Guru99: true is Guru99 == to GURU99: false
Selitys:
- Ensimmรคinen tulos palauttaa loogisen arvon tosi. Merkkijonot, joilla on sama sisรคltรถ, lisรคtรครคn samaan merkkijonoon, joten merkkijonolla on yksi osoite.
- Toinen tulos palauttaa loogisen arvon false. Objekteilla on erilainen sisรคltรถ, mikรค johtaa muihin merkkijonoihin. Tรคmรค tarkoittaa, ettรค merkkijonoilla on erilliset objektiviitteet; joten tulos on vรครคrรค.
Tapa 7: Mukautetun menetelmรคn luominen kahden merkkijonon vertailua varten Java
Luo menetelmรค, joka vertaa kahta merkkijonoa kรคyttรคmรคllรค leksikografista jรคrjestystรค.
Syntaksi:
public static int compareTwoStrings(String str1, String str2)
Mukautetut menetelmรคparametrit
- str1 โ verrattava merkkijono.
- str2 โ merkkijono, johon verrata.
Mukautettu menetelmรค palauttaa
- 0 โ Palauttaa nollan, jos ensimmรคinen merkkijono on yhtรค suuri kuin toinen merkkijono.
- < 0 โ Palauttaa luvun, joka on pienempi kuin nolla, jos ensimmรคinen merkkijono on pienempi kuin toinen merkkijono.
- > 0 โ Palauttaa nollaa suuremman luvun, jos ensimmรคinen merkkijono on suurempi kuin toinen merkkijono.
Esimerkiksi:
public class CompareTwoStrings {
public static int compareTwoStrings(String stringOne, String stringTwo) {
int lengthOfStringOne = stringOne.length();
int lengthOfStringTwo = stringTwo.length();
int minStringLength = Math.min(lengthOfStringOne, lengthOfStringTwo);
for (int i = 0; i < minStringLength; i++) {
char stringOneCharValue = stringOne.charAt(i);
char stringTwoCharValue = stringTwo.charAt(i);
if (stringOneCharValue != stringTwoCharValue) {
return stringOneCharValue - stringTwoCharValue;
}
}
if (lengthOfStringOne != lengthOfStringTwo) {
return lengthOfStringOne - lengthOfStringTwo;
} else {
return 0;
}
}
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + compareTwoStrings(stringOne, stringTwo));
}
}
Odotettu tuotos:
is Guru99 equal to Guru99: 0
Selitys:
Tulos palautti arvon nolla, mikรค tarkoittaa, ettรค mukautettu toiminto toimii odotetulla tavalla.
Yhteenveto:
Java Vertaa kahta merkkijonoa kรคytettรคvรค menetelmรค riippuu seuraavista tekijรถistรค.
- Halu hallita menetelmรครคsi. Luo tรคssรค tapauksessa mukautettu menetelmรค.
- Et voi kรคyttรครค Legacy-koodia. kanssa Java 6 ja alempi.
- Menetelmรค, jolla on optimaalinen suorituskyky.
- Tietotyyppi, jonka kanssa tyรถskentelet. Esimerkiksi merkkijonon tรคsmรครคminen muuttujaargumenttien joukosta.
- Ulkoistetun kirjaston tarjoamat ominaisuudet. Esimerkiksi StringUtils-kirjasto tarjoaa erilaisia โโmenetelmiรค merkkijonojen vertailuun.
