Comperable

Status
Nicht offen für weitere Antworten.

sirair

Aktives Mitglied
Hi,

ich habe eine Klasse, welche dieses Interface implementiert.
Diese Klasse hat eine Methode die einen String zurückliefert.
Ich habe eine Liste erstellt, in der diese Strings gespeichert werden-
Nun möchte ich, dass sie nach dem Alphabet sortiert werden, habe es bisher so gelöst:


... compare to(Object a, Object b){
return (String)a.toUppercase.compareTo((String)b.toUppercase);
}

Gibt es vielleicht eine bessere Lösung?
 

Der Müde Joe

Top Contributor
meinst du das:
Comparable (Java Platform SE 6)

lasst die Strings einfach comparen. Die haben eine natürliche Ordnung --> Alphabetisch.
und compareTo gibt einen int zurück!

EDIT:
>Ich habe eine Liste erstellt, in der diese Strings gespeichert werden-

du benutzt

Collections.sort(list)

oder?
 
Zuletzt bearbeitet:
B

Beni

Gast
Benutz den Collator um Strings zu vergleichen, der behandelt auch noch sprachtypische Sonderzeichen.
 
Zuletzt bearbeitet von einem Moderator:

Michael...

Top Contributor
Was hat jetzt die Liste mit Strings mit Deiner Klasse zu tun (abgesehen davon, dass diese daraus kommen)? Willst Du die Liste mit den Strings sortieren oder willst Du Objekte Deiner Klasse anhand der Strings sortieren?
Eine Liste mit Strings kann man z.B. so sortieren:
Java:
List<String> list = new ArrayList<String>();
list.add("B");
list.add("A");
Collections.sort(list);
 

sirair

Aktives Mitglied
(Comparable (Java Platform SE 5))also,
habe vergessen was anzugeben.
In der Liste sind Objekte von der Klasse, die das Interface implementiert.
Jetzt möchte ich diese Objekte sortieren, wobei immer die Funktion getName() aufgerufen wird, also...

Java:
return (String)a.getName().toUppercase.compareTo((String)b.getName().toUppercase);
 
Zuletzt bearbeitet:

Der Müde Joe

Top Contributor
so zb (mit beni's collator):
Java:
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


public class Foobar {

	public static void main(String... _) {
		List<StringHolder> list = new ArrayList<StringHolder>();
		StringHolder a = new StringHolder();
		a.name = "zzz";
		StringHolder b = new StringHolder();
		b.name = "zazz";
		StringHolder c = new StringHolder();
		c.name = "zzvz";
		StringHolder d = new StringHolder();
		d.name = "azzz";
		list.add(a);
		list.add(b);
		list.add(c);
		list.add(d);
		for (StringHolder s : list) {
			System.out.println(s.getName());
		}
		System.out.println();
		Collections.sort(list);
		for (StringHolder s : list) {
			System.out.println(s.getName());
		}
	}

	static class StringHolder implements Comparable<StringHolder> {

		static Collator collator = Collator.getInstance();
		
		String name;

		String getName() {
			return name;
		}

		@Override
		public int compareTo(StringHolder o) {
			return collator.compare(name, o.getName());
		}
	}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben