"Compares two strings lexicographically"

  • Themenstarter Themenstarter TP
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.

TP

Mitglied
Hallo,

ich habe eine Frage zu der Methode compareTo. Dort steht, das die Methode zwei Strings "lexicographically" vergleicht, und zwar anhand des Unicode Wertes. Nun ist mir Unicode nichts völlig unbekanntes, ich weiß auch (in etwa 😉) wie die Buchstaben dadurch beschrieben werden - nur verstehe ich nicht, was genau mir dieser Vergleich bringt? Ich meine was sagt der großartig aus, außer das ein Buchstabe in der Unicode-Tabelle "weiter weg" ist als der andere?

Oder habe ich hier wieder was grundlegendes nicht verstanden 🙂


ciao,
TP
 
was lexiographisch heißt, weißt du??
die strings werden so geordnet wie im lexikon 😉 jetz rat mal wie 😉
 
Aus meinem Lieblingsjavabuch Just Java 2 von Peter van der Linden:

"They call it "lexicographic order," rather than "alphabetic order," because lots of string valus are digits, punctuation, or other non-alphabetic characters.

Normalerweise ist es Alphabetisch, da aber Strings nicht nur Buchstaben enthalten wurde das ganze halt anders genannt.
 
ja eben, deswegen verstehe ich folgende ausgabe bei folgendem code nicht:

Code:
      String s = "Mayer";
      
      System.out.println( "Mayer: " + s.compareTo("Mayer"));
      System.out.println( "Maier: " + s.compareTo("Maier"));
      System.out.println( "Fritz: " + s.compareTo("Fritz"));

Ausgabe:

Code:
Mayer: 0
Maier: 16
Fritz:  7

Wieso hat Fritz einen kleineren Wert als Maier? Maier ist doch wesentlich "näher" dran als Fritz oder?

ciao,
TP
 
compareTo() fängt beim ersten Buchstaben an, vergleicht also den ersten Buchstaben von Fritz mit Maier:

-> F mit M

F kommt vor M (bzw. M kommt nach F) somit gibt die Methode etwas größer als 0 zurück.
 
TP hat gesagt.:
Wieso hat Fritz einen kleineren Wert als Maier? Maier ist doch wesentlich "näher" dran als Fritz oder?

Wenn du nach obigem Schema vorgehst siehst du das es nicht so ist:

Ma|y
Ma|i

An dieser Stelle taucht ein Unterschied auf, es wird der Unterschied zwischen y und i bestimmt.

|M
|F

Bereits an der ersten Stelle von Fritz und Mayer taucht ein Unterschied auf, auch hier wird der Unterschied bestimmt : zwischen M und F.

Und F liegt näher an M als i an y.

Korrigiert mich wenn meine Ausführungen falsch sein sollten.
 
Mayer und Maier haben ja zwei Buchstabden gleich - das zählt also "weniger"? Schade..... ich dachte damit eine Methode die sehr bequem und einfach eine Suche nach relevanten Verschreibsern gefunden zu haben - wäre ja zu schön gewesen 🙂

Wofür braucht man die Methode denn in der Praxis?

Edit: Ah, es kommt also auch auf die Differenz der einzelnen Buchstaben untereinander an? Nagut, das erklärt das sehr gut -> Zwischen i und y liegt ja einiges 😉

ciao,
TP
 
TP hat gesagt.:
Mayer und Maier haben ja zwei Buchstabden gleich - das zählt also "weniger"?

An diesem Beispiel wirds wohl noch deutlicher:

Code:
		String a = "Mayer";
		String b = "Mayea";
		String c = "Lmkoy";
		
		System.out.println(a +" mit "+b+" = "+a.compareTo(b));
		System.out.println(a +" mit "+c+" = "+a.compareTo(c));

Als Ausgabe:

Mayer mit Mayea = 17
Mayer mit Lmkoy = 1

Schade..... ich dachte damit eine Methode die sehr bequem und einfach eine Suche nach relevanten Verschreibsern gefunden zu haben - wäre ja zu schön gewesen 🙂

Nach was für einer Methode suchst du denn? Nach einer die anhand von gemeinsamen Zeichen einen Rückgabewert zurückgibt, der Auskunft darüber gibt wieviele Zeichen denn nun tatsächlich übereinstimmen oder was?
 
ich habe nicht direkt nach eine methode gesucht, sondern gedacht, zufällig eine methode gefunden zu haben mit der sich suchanfragen leicht produzieren lassen die auf ähnliche ergebnisse und rechtschreibfehler eingehen -> das typischer mayer-beispiel: man gibt "mayer" ein, es sollen auch die ergebnisse "maier" ausgespuckt werden.

nagut, war naiv - ich gebs zu 🙂

ciao,
TP
 
Ok....aber so eine Methode kannst du dir ja auch leicht selber schreiben, ist nicht allzu schwer. Einfach die beiden Strings Zeichen für Zeichen untersuchen und bei Unterschieden ne Zählvariable hochzählen etc.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben