2009-04-27 5 views
0

Wie kann ich zwei Vektoren füllen und sie miteinander kombinieren (entweder Index oder ein Objekttyp in der Klasse). Ich denke, wenn ich Index verwende, um sie zu kombinieren, dann kann die Sortierung mit Collections.sort gehandhabt werden, andernfalls muss ich einen Vergleicher erstellen.Java: Füllt zwei Vektoren und sortiert sie

Wir müssen bis zur Java 1.4-Konvention codieren.

Um Ihre Fantasie zu erleichtern; Es ist ein Raster mit einem Sortiervektor (Zeilen) und einem Inhaltsvektor (mit allen Spalten). Sie müssen in einem Vektor ausgefüllt und sortiert werden.

Kontext: Ich habe ein GridBagLayout, das alle Komponenten in einer seltsamen Reihenfolge enthält. Ich muss alle Komponenten durchlaufen und sie in der richtigen Reihenfolge (gridx, gridy) ausfüllen. Für diese Lösung habe ich über zwei Vektoren nachgedacht, einen definiert die Zeile und zeigt auf den Vektor mit den Spalten. Entweder wird die Sorte beim Füllen des Vektors aufgelöst, oder ich muss sie in einem zweiten Schritt sortieren. Ich denke, für Java 4 gibt es keinen anderen Ansatz als zwei Vektoren, die ein Objekt enthalten, oder?

+0

Entschuldigung, aber Ihre Frage ist mir nicht sehr klar, wahrscheinlich möchten Sie es neu formulieren. –

+0

Vielleicht hast du Recht ... * seufz * Sie haben ein GridBagLayout, das alle Komponenten in einer seltsamen Reihenfolge enthält. Ich muss alle Komponenten durchlaufen und sie in der richtigen Reihenfolge (gridx, gridy) ausfüllen. Für diese Lösung habe ich über zwei Vektoren nachgedacht, einen definiert die Zeile und zeigt auf den Vektor mit den Spalten. Entweder wird die Sortierung beim Füllen des Vektors aufgelöst, oder ich muss sie in einem zweiten Schritt sortieren. Ich denke, für Java 4 gibt es keinen anderen Ansatz als zwei Vektoren mit einem Objekt, richtig? –

+1

Bitte bearbeiten Sie Ihre Frage und klären Sie sie auf; Nicht jeder liest die Kommentare. –

Antwort

0

Bitte lassen Sie mich wissen, wenn ich es verstehe. Als Eingabe erhalten Sie zwei Vektoren. Die erste ist eine geordnete Liste von Reihennummern, die auf Indizes im zweiten Vektor verweisen. Der zweite Vektor ist eine Liste von etwas. Sie möchten einen Vektor, der dieselben Objekte wie der zweite Vektor enthält, aber in der Reihenfolge sortiert ist, die im ersten Vektor beschrieben wird.

Unter der Annahme, das ist, was Sie versuchen, dies zu tun ist, wie ich es tun würde:

public class ThisHadBetterNotBeAHomeworkAssignmentYoungMan { 

    public Vector orderContent(Vector indices, Vector content) { 
     Object[] orderedStuff = new Object[content.size()]; 
     for(int i=0; i < indices.size(); i++) { 
      orderedStuff[i] = content.get(((Integer)indices[i]).intVal()); 
     } 
     return new Vector(orderedStuff); 
    } 
} 

// Beachten Sie, dass diese ziemlich rau Code ist, und ich habe sie weder ausgeführt noch die Mühe zu überprüfen, Sehen Sie, ob Sie ein Array von Dingen in einem Vektor als Konstruktor übergeben können, aber Sie bekommen die Idee.

// Beachten Sie auch, dass ich nicht sicher bin, was genau Sie fragen und könnte völlig falsch sein.

+0

Ihre Beschreibung oben ist fast das, was ich brauche. Außer dass der orderVector nicht derselbe wie contentVector sein muss. OrderVector sollte meiner Meinung nach nur zwei Index haben. –

1

Die OO-Lösung soll die Objekte in beiden Vektoren in etwas einwickeln, das den Vergleich implementiert und einen Zeiger auf das reale Objekt behält. Auf diese Weise können Sie beide Vektoren unabhängig voneinander sortieren und den Wrapper verwenden, um das reale Objekt zu erhalten.

Dies ist das Entwurfsmuster "Decorator".