Vector sortieren

jma

Mitglied
Moin

ich habe einen Vector "vTimer" bestehend aus mehreren Einträgen vom Objekt "cTimer".

Die Klasse cTimer besteht aus den Variablen startTime, endTime jeweils vom Typ Date. Desweiteren einige weitere Variablen und Methoden.

Diesen Vector mit allen Einträgen möchte ich nun nach startTime sortieren.
Hab gelesen das das mit einem Comparator funktionieren soll, jedoch keine ahnung wie das programmtechnisch genau umgesetzt werden muss.

Vielleicht hat ja von euch einer nen Programmbeispiel für die geschilderte Situation zur Hand. Würde mir sehr weiterhelfen.

Besten Dank für eure Antwort.
jma
 

Thomas Darimont

Erfahrenes Mitglied
Hallo!

Schau mal hier:
Code:
/**
 * 
 */
package de.tutorials;

import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.Iterator;
import java.util.Random;
import java.util.Vector;

/**
 * @author Tom
 */
public class VectorSortExample {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new VectorSortExample().doIt();
	}

	private void doIt() {

		Vector v = new Vector();
		Random r = new Random();

		for (int i = 0; i < 10; i++) {
			v.add(new CTimer(new Date(r.nextInt(10000000)), new Date(r
					.nextInt(10000000) + 10000001)));
		}

		for (Iterator iter = v.iterator(); iter.hasNext();) {
			CTimer timer = (CTimer) iter.next();
			System.out.println(timer);
		}

		Collections.sort(v, new Comparator() {
			public int compare(Object o1, Object o2) {
				CTimer c1 = (CTimer) o1;
				CTimer c2 = (CTimer) o2;
				return c1.startTime.compareTo(c2.startTime);
			}
		});
		System.out.println("After Sorting: ");

		for (Iterator iter = v.iterator(); iter.hasNext();) {
			CTimer timer = (CTimer) iter.next();
			System.out.println(timer);
		}

	}

	class CTimer {
		Date startTime;

		Date endTime;

		public CTimer(Date startTime, Date endTime) {
			this.startTime = startTime;
			this.endTime = endTime;
		}

		public String toString() {
			return super.toString() + "Start: " + startTime + " | End: "
					+ endTime;
		}
	}
}

gruß Tom