Sortierung

Skultch

Grünschnabel
Hi,

Habe ein Problem mit einer Liste. Ich will gerne eine Liste Sortieren anhand der Sortierung einer 2ten Liste. Ist dies möglich ? Oder ist das nur reines Wunschdenken? Wenn ja habt Gnade mit mir. :-(

(Wenns nicht funktioniert gibts eine andere Möglichkeit mein Ziel zu erreichen ?)

Danke im Voraus!
 
Hallo,

möglich ist ja fast alles !

Wie lang sind die Listen, wonach ist die unsortierte im vergleich zur sortierten Liste zu ordnen ?

Sind immer alle Elemente in der unsortierten Liste in der Sortierten zu finden ?

Wie sind die Listen organisiert ? Array, Vector, List ... etc . ?

Gruß JAdix
 
Thema zu den Listen ist die Gewichtung für Wörter.
Zunächste habe ich eine Liste(List<String>...= new ArrayList<String>()) von einmaligen Wörtern einer Textdatei hinzugefügt und zu jedem Wort dieser Liste habe ich die jeweilige Gwichtung(Double) errechnet und jeweils in einer neuen Liste (List<Double>...= new ArrayList<Double>()) Gespeichert. Nun gibt es 2 listen:

eine mit den einmaligen Wörtern
und
eine mit den Gewichtungen.

Jetzt hat das Wort im index(0) der Wörterliste das Gewicht im index(0) der Gwichtungsliste.
Nun möchte ich eine Top10 mit den größten Gewichtungen+Wort ausgeben, dafür wollte ich zunächst die Gewichtung mit Collection.sort(liste) und Collection.reverse(liste) sortieren.
Doch dann ist mir dieses Problem aufgefallen was ich im ersten Beitrag (Mehr oder weniger)formuliert habe und suche nun nach Hilfe.
 
Zuletzt bearbeitet:
Das ist sehr unschön etwas so zu lösen.

Du solltest dir eine eigene Struktur anlegen die String und double enthält und kannst dann entsprechend sortieren.
 
Java:
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class WordAndWeight implements Comparable<WordAndWeight> {

	private final String word;
	private final double weight;

	public WordAndWeight(final String word, final double weight) {
		this.word = word;
		this.weight = weight;
	}

	public double getWeight() {
		return weight;
	}

	public String getWord() {
		return word;
	}

	public String toString() {
		return MessageFormat.format("{0} [w={1,number}]", word, weight);
	}

	@Override
	public int compareTo(WordAndWeight o) {
		return Double.compare(weight, o.weight);
	}

	public static void main(String[] args) {
		List<WordAndWeight> lst = new ArrayList<WordAndWeight>();

		// Mit zufallsgewichtungen füllen
		Random r = new Random();
		for (int i = 0; i < 20; i++) {
			lst.add(new WordAndWeight("test" + i, r.nextDouble()));
		}

		// Ausgabe unsortierte Liste
		System.out.println(lst);
		// Sortieren
		Collections.sort(lst);
		// Ausgabe sortierte Liste
		System.out.println(lst);
	}

}
 
Ähm...wäre es nicht einfach sinnvoll statt der 2 Listen eine TreeMap(von Haus aus sortiert) oder sonstige Map zu machehn, wo du dann das Wort als Key benutzt und der berechnete Wert als Value?
 
Zurück