Sortierung, Collator und Case

Status
Nicht offen für weitere Antworten.
Hallo,

ich versuche eine Wortliste zu sortieren. Da Umlaute berücksichtigt werden sollen verwende ich den Collator.
In Bezug auf die Umlaute ist das Ergebnis auch wie erwartet, in Bezug auf Groß-/Kleinschreibung jedoch nicht. Nicht nur dass ich gerne Groß < klein statt andersherum hätte. Aber mich verwundert es auch sehr dass nicht erst alle Worte kommen die mit "m" beginnen und dann alle mit "M" beginnen.

Code:
List<String> testList = Arrays.asList("muller", "Muller", "Mueller", "mueller", "Müller", "müller", "múller", "Múller", "mußte", "musste", "Test", "test", "Mullmann", "mullmann");
    Collator collator = Collator.getInstance();
    collator.setStrength(Collator.TERTIARY);
    Collections.sort(testList, collator);
    for (String line : testList)
      System.out.println(line);

Ergibt: mueller, Mueller, muller, Muller, múller, Múller, müller, Müller, mullmann, Mullmann, musste, mußte, test, Test

Gibt's da noch was einzustellen?

Robert
 
S

SlaterB

Gast
mir scheint, dass auch das gegen Regeln wie
l,L<m,M<n,N<o,O<p,P
nicht ankommt

folgendes geht anscheinend
Code:
public class Test {

	public static void main(String argv[]) throws Exception {

		List<String> testList = Arrays.asList("muller", "Muller", "Mueller",
				"mueller", "Müller", "müller", "múller", "Múller", "mußte",
				"musste", "Test", "test", "Mullmann", "mullmann", "nn", "nm",
				"mn", "Nm", "MN");
		RuleBasedCollator oldCol = (RuleBasedCollator) Collator.getInstance(Locale.GERMAN);
		System.out.println(oldCol.getRules());

		String rules = "m<n<t<M<N<T";
		RuleBasedCollator newCol = new RuleBasedCollator(oldCol.getRules() + rules);

		newCol.setStrength(Collator.PRIMARY);
		Collections.sort(testList, newCol);
		for (String line : testList)
			System.out.println(line);
	}
}
also entweder so auf alle 52 normalen Buchstaben ausgeweitet und hoffen, dass es mit den Umlauten keinen Ärger gibt,
oder ein komplett neues Regelwerk angeben, siehe RuleBasedCollator-API
 
folgendes geht anscheinend
Code:
...
also entweder so auf alle 52 normalen Buchstaben ausgeweitet und hoffen, dass es mit den Umlauten keinen Ärger gibt,
oder ein komplett neues Regelwerk angeben, siehe RuleBasedCollator-API

Hey, danke Slater!

Mit allen 53 Buchstaben (A<B<C<D<E<F<G<H<I<J<K<L<M<N<O<P<Q<R<S<T<U<V<W<X<Y<Z,a<b<c<d<e<f<g<h<i<j<k<l<m<n<o<p<q<r<s<ß<t<u<v<w<x<y<z) scheint es tatsächlich zu funktionieren.
Sogar mit Umlauten und Akzenten, irgendwas mit Normalisierung lt. RuleBasedCollator-API da die meistens aus normalen Buchstaben und Sonderzeichen zusammengesetzt werden.
Nur spezielle Sachen wie dass jetzt ð vor statt nach d einsortiert wird klappt nicht. Aber das sollte in meinem Fall (Sortierung von Filenamen) unkritisch sein.

Eine sehr schöne Lib zu dem Thema is ICU4J. Die hat auch eine Collator-Klasse die viel mehr als die Standardklasse kann. Nur ist es leider selbst auf den Collatorteil runtergestrippt als kompiliertes jar 2,6 MB groß. Overkill für ein Tool das selbst nur 100KB hat.

Robert
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Fynn29 Liste sortieren ohne Array und ohne vorgegebene Sortierung Allgemeine Java-Themen 24
H Collections Aktuellen Index generell und nach Sortierung ausgeben Allgemeine Java-Themen 6
N Sortierung Allgemeine Java-Themen 8
R Frage zur topologischen Sortierung Allgemeine Java-Themen 2
S Alphabetische sortierung mit Quicksort Allgemeine Java-Themen 10
J Sortierung in Array Allgemeine Java-Themen 9
J Array Sortierung auf andere Arrays anwenden Allgemeine Java-Themen 6
hdi JTable: Sortierung von Date-Objekten Allgemeine Java-Themen 4
isowiz java.util.List: Sortierung nicht nach bestimmten Attribut? Allgemeine Java-Themen 4
S Bei Sortierung Speicher zu gering? Allgemeine Java-Themen 8
T Hashmap füllen mit rs sortierung Allgemeine Java-Themen 9
B Sortierung einer ArrayList mit Comparator Allgemeine Java-Themen 6
A ArrayList Sortierung rumdrehen Allgemeine Java-Themen 3
T Sortierung mit Collections.sort() Allgemeine Java-Themen 4
N Sortierung eines TreeSets kann zerstört werden?? Allgemeine Java-Themen 3
F Algorithmus für Sortierung gesucht Allgemeine Java-Themen 15
D hallo sortierung? Allgemeine Java-Themen 15
S Sortierung einer Collection nach dem Attribut "name&quo Allgemeine Java-Themen 3
A Datenstruktur und Sortierung Allgemeine Java-Themen 12
Ameise03 Best&Worst Case bei Insertionsort Allgemeine Java-Themen 10
T regex case insensitive trimmed Allgemeine Java-Themen 6
ReinerCoder Case statt if else Abfragen?! Allgemeine Java-Themen 8
C Regex (Case insensitive und Umlaute) Allgemeine Java-Themen 4
B RowFilter Case Insensitive Problem Allgemeine Java-Themen 3
L String -> Case insensitiv replacement Allgemeine Java-Themen 5
1 String mit contains vergleichen (ignore case) Allgemeine Java-Themen 2
DStrohma [Erledigt] Regex CASE INSENSITIVE Allgemeine Java-Themen 7
V Case-sensitiv nur in Jar? Allgemeine Java-Themen 8
MQue Use case Allgemeine Java-Themen 8
E CASE Tools Allgemeine Java-Themen 15
F case Allgemeine Java-Themen 3
0 case orphaned Fehlermeldung! Allgemeine Java-Themen 2
G switch case VS. if.else if Allgemeine Java-Themen 2
M Switch von case zu case weiterleiten Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben