Vector istGeordnet

Franm

Mitglied
Hallo Leute,

ich muss euch noch ein letztes Mal nerven :D

Ich habe eine Klasse dort sind in einem Vector meine Objekte mit den Studenten eingespeichert. Jetzt möchte ich eine Methode implementieren, die mir sagt ob die Objekte im Vector geordnet sind und eine zweite Methode wo mit ich diese ordnen kann. Könnt ihr mir da helfen?

Habe zwei Methoden dafür implementiert, obwohl ich denke die mit dem SimpleDataFormat ist die bessere oder?

Methode zum vergleichen des Geburtsdatum:
Java:
	public int comparteToDate(Student x) throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
		Date s1 = sdf.parse(this.gebdat);
		Date s2 = sdf.parse(x.gebdat);

		return s1.compareTo(s2);
	}

	public int compareTo(Student x) {
		Integer.parseInt(this.gebdat);
		Integer.parseInt(x.gebdat);

		return this.gebdat.compareTo(x.gebdat);
		// return Integer.parseInt(this.gebdat) - Integer.parseInt(x.gebdat);
	}

Hier ist meine Klasse mit dem Vektor

Java:
import java.util.Vector;

public class Aufgabe3 extends Student implements Comparable<Student> {

	public Aufgabe3(String name, int mat_nr, String gebdat) {
		super(name, mat_nr, gebdat);
		// TODO Auto-generated constructor stub
	}

	public static boolean istGeordnet(Vector<Student> studenten)
			throws ParseException {
		int count = 0;
		for (int i = 0; i < studenten.size(); i++) {
			for (int j = 1; j < studenten.size() - 1; j++) {
				switch (studenten.get(i).comparteToDate(studenten.get(j))) {
				case 1:
					System.out.println("1 "+i+j);
					break;
				case 0:
					System.out.println("0 "+i+j );
					count++;
					break;
				case -1:
					System.out.println("-1 "+i+j);
					count++;
					break;
				}
			}
		}
		if (count == studenten.size()) {
			return true;
		} else {
			return false;
		}

	}

	public static void main(String[] args)  {
		Vector<Student> studenten = new Vector<Student>();
		// Erzeugung von drei Studenten
		Student st1 = new Student("Hans", 123, "05.02.1993"); // x
		Student st3 = new Student("Franz", 456, "02.02.1993"); // i x
		Student st2 = new Student("Klaus", 789, "03.02.1993"); // i x
		Student st4 = new Student("Aus", 1011, "03.02.1991"); // i x
		// Einfügen der Objekte st1, st2 und st3 in den Vector
		studenten.add(st1);
		studenten.add(st2);
		studenten.add(st3);
		studenten.add(st4);
		
System.out.println(istGeordnet(studenten));
		for (int i = 0; i < studenten.size(); i++) {
			(studenten.elementAt(i)).toString();

			System.out.println(studenten.elementAt(i).toString());
		}
		

	}

}
 
Zuletzt bearbeitet:

anti-held

Bekanntes Mitglied
Deine Klasse Student muss das Interface Comparable<Student> implementieren.
Dann fügst du den Code aus deiner Methode compareToDate in die Methode compareTo(Student x) ein und rufst in deiner main-Methode [c]Collections.sort(studenten)[/c] auf um deinen Vector zu sortieren.
 

Franm

Mitglied
Wenn ich den Inhalt von compareToDate in compareTo(Student x ) einfüge, werden mir Date s1 und Date s2 als Fehler "Unhandled exception type ParseException" angezeigt.
 

anti-held

Bekanntes Mitglied
Dann solltest du diese auffangen und behandeln. (Wie man es mit allen Exceptions machen sollte)
Möglichkeiten wären, dass dann 0 zurückgegeben wird (was heißt dass die beiden den gleichen Wert haben)
 

Franm

Mitglied
Wenn die beiden Werte den gleichen Wert haben, dann besitzen diese einfach das gleich Datum. Ich werfe die ParseException in der Methode compareTo, aber er möchte mich diese nicht werfen lassen, sondern schlägt vor die Exception zu entfernen. Warum?
 

anti-held

Bekanntes Mitglied
Weil diese Methode vom Interface Comparable übernommen wurde.
Und die super Methode wirft auch keine Exception.

Wenn das Datum nicht entsprechend der Vorgabe formatiert ist, kann keine Aussage darüber getroffen werden,
welches eher war. Deshalb wird 0 zurückgegeben. Was ist daran falsch?
 

Franm

Mitglied
Hier ist der Code wie er jetzt ist. Es kommt beim ausführen immer das Problem mit der "Unhandeld ParseException"

Klasse Student

Java:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Student implements Comparable<Student> {
	public String name; // Name
	public int mat_nr; // Matrikelnummer
	public String gebdat; // Geburtsdatum tt.mm.jjjj

	public Student(String name, int mat_nr, String gebdat) {
		this.name = name;
		this.mat_nr = mat_nr;
		this.gebdat = gebdat;
	}

	public String toString() {
		return ("Student: " + name + " , " + mat_nr + " , " + gebdat);
	}

	public int comparteToDate(Student x) throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
		Date s1 = sdf.parse(this.gebdat);
		Date s2 = sdf.parse(x.gebdat);

		return s1.compareTo(s2);
	}

	public int compareTo(Student x) {

		SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");

		Date s1 = sdf.parse(this.gebdat);
		Date s2 = sdf.parse(x.gebdat);

		return s1.compareTo(s2);

		
	}

	public int compareToMatnr(Student x) {
		return this.mat_nr - x.mat_nr;

	}
}


Die Klasse mit dem Vector:

Java:
import java.text.ParseException;
import java.util.Collections;
import java.util.Vector;

public class Aufgabe3 extends Student implements Comparable<Student> {

	public Aufgabe3(String name, int mat_nr, String gebdat) {
		super(name, mat_nr, gebdat);
		// TODO Auto-generated constructor stub
	}

	public static boolean istGeordnet(Vector<Student> studenten)
			throws ParseException {
		int count = 0;
		for (int i = 0; i < studenten.size(); i++) {
			for (int j = 1; j < studenten.size() - 1; j++) {
				switch (studenten.get(i).compareTo(studenten.get(j))) {
				case 1:
					System.out.println("1 " + i + j);
					break;
				case 0:
					System.out.println("0 " + i + j);
					count++;
					break;
				case -1:
					System.out.println("-1 " + i + j);
					count++;
					break;
				}
			}
		}
		if (count == studenten.size()) {
			return true;
		} else {
			return false;
		}

	}

	public static void main(String[] args) throws ParseException {
		Vector<Student> studenten = new Vector<Student>();
		// Erzeugung von drei Studenten
		Student st4 = new Student("Hans", 123, "05.02.1993"); // x
		Student st2 = new Student("Franz", 456, "02.02.1993"); // i x
		Student st3 = new Student("Klaus", 789, "03.02.1993"); // i x
		Student st1 = new Student("Aus", 1011, "03.02.1991"); // i x
		// Einfügen der Objekte st1, st2 und st3 in den Vector
		studenten.add(st1);
		studenten.add(st2);
		studenten.add(st3);
		studenten.add(st4);
		Collections.sort(studenten);
		System.out.println(istGeordnet(studenten));
		for (int i = 0; i < studenten.size(); i++) {
			(studenten.elementAt(i)).toString();

			System.out.println(studenten.elementAt(i).toString());
		}

	}

}


Der Fehler ist in der Klasse Student bei der Methode compareTo( Student x ).
 

anti-held

Bekanntes Mitglied
Java:
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
			Date s1 = sdf.parse(this.gebDate);
			Date s2 = sdf.parse(x.gebDate);
			return s1.compareTo(s2);
		} catch (ParseException ex) {
			return 0;
		}
 

Franm

Mitglied
Danke, jetzt bleibt nur ein Problem in der Klasse mit dem Vector muss ich ja irgendwie den ganzen Vector mit for-Schleifen durchlaufen, damit ich am Ende sagen kann ob es geordnet ist oder nicht. Ich hatte mir das so vorgestellt, dass ich mir zwei for-Schleifen erstelle und eine der beiden for-Schleifen ist immer ein Objekt weiter und dann vergleiche ich diese miteinander, aber wenn ich den Vector durchlaufe mit den beiden Schleifen, dann vergleicht er immer mit den i=0 und j=1, danach i=0 und j=1, aber er soll i=0 und j=1, danach i=1 und j=2 usw. Habe ich da ein Denkfehler oder ist das nicht so möglich wie bei einem Array?
 

anti-held

Bekanntes Mitglied
Verwende doch keine 2 Schleifen.

Diese Methode erfüllt deinen Zweck

Java:
	public boolean isSorted(Iterable<Student> iterable) {
		Iterator<Student> iterator = iterable.iterator();
		if (!iterator.hasNext()) {
			return true;
		}
		Student tmp1 = iterator.next();
		while (iterator.hasNext()) {
			Student tmp2 = iterator.next();
			if (tmp1.compareTo(tmp2) > 0) {
				return false;
			}
			tmp1 = tmp2;
		}
		return true;
	}
 

anti-held

Bekanntes Mitglied
Ein Iterator ist eine Art Zeiger, der innerhalb einer Liste auf ein Objekt zeigt.
Er wird benutzt, wenn man für mehrere Objekte innerhalb von Listen Aktionen ausführen will.

Schön beschrieben ist das auch hier:
Iterator
 

Franm

Mitglied
Die Seite ist echt gut. Verstehe nur den Teil nicht.
tmp1 wird auf den Nachfolger vom Iterator gesetzt, aber unten wird auch tmp2 auf den Nachfolger vom Iterator besetz. Zeigen die Beiden, dann nicht auf das gleiche Objekt? Dann ganz unten tmp1=tmp2 dann bleiben Sie doch immer noch beim gleichen Objekt. Das verwirrt mich ein bisschen.

Java:
Student tmp1 = iterator.next();
		while (iterator.hasNext()) {
			Student tmp2 = iterator.next();
			if (tmp1.compareTo(tmp2) > 0) {
				return false;
			}
			tmp1 = tmp2;
		}
 

anti-held

Bekanntes Mitglied
Nein. Bei jedem Aufruf von next() wandert der "Zeiger" selbst auch zum nächsten Objekt.

Also würde bei einer Liste mit den Werten 1, 2 und 3

Bei einem dreimaligen Aufruf von next() auf dessen Iterator
erst 1, dann 2 und schließlich 3 zurückgegeben werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Erste Schritte Alle möglichen ausgaben von 5 Zahlen als Vector Java Basics - Anfänger-Themen 7
C Werte im Vector in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 14
C Vector-Inhalt in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 6
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
J Reihenfolge im Vector lässt sich nicht drehen Java Basics - Anfänger-Themen 9
M Klassen Gesamt speicherbare Elemente in Vector? Java Basics - Anfänger-Themen 3
P Vector durchsuchen und Elemente löschen Java Basics - Anfänger-Themen 4
Z Vector in jTextField/jLabel darstellen Java Basics - Anfänger-Themen 4
P Objekte in Vector werden überschrieben Java Basics - Anfänger-Themen 4
P Array in Vector speichern Java Basics - Anfänger-Themen 2
E Methoden new Vector().add(x).add(x); ? Java Basics - Anfänger-Themen 5
R Vector-Filterfunktion Java Basics - Anfänger-Themen 4
Todesbote Map (Key=String; Value = Vector) Value/Vector sortieren Java Basics - Anfänger-Themen 13
J Vector Manipulieren.. Wie? Java Basics - Anfänger-Themen 16
M Vector eines Vectors einzeln ausgeben Java Basics - Anfänger-Themen 9
K String kommt schon in Vector vor? Java Basics - Anfänger-Themen 36
J Erzeugung eines Vector-Objekts - Frage zum Typ Java Basics - Anfänger-Themen 3
H Zugriff auf Vector Element Java Basics - Anfänger-Themen 2
C Vector erzeugt neue Indizes nach Input Java Basics - Anfänger-Themen 2
A Author in Vector Java Basics - Anfänger-Themen 22
M Vector überschreibt Elemente bei add()-Methode Java Basics - Anfänger-Themen 10
T Elemente im Vector werden einfach überschrieben! Java Basics - Anfänger-Themen 3
K Collections Vector zu String casten Java Basics - Anfänger-Themen 4
U Wozu dient ein Vector in Java? Java Basics - Anfänger-Themen 6
S Vector mit beliebigen Klassen an Funktion übergeben Java Basics - Anfänger-Themen 20
B Globale vector? Java Basics - Anfänger-Themen 7
E 2 Dimensionaler Vector Java Basics - Anfänger-Themen 5
T Map<String, Vector>? Java Basics - Anfänger-Themen 11
P Collections Vector füllen in for-Schleife Java Basics - Anfänger-Themen 3
J Vector Addition Java Basics - Anfänger-Themen 5
M 2D Vector Java Basics - Anfänger-Themen 2
N IndexOutOfBoundsException: Source does not fit in dest beim Kopieren von ArrayList in Vector Java Basics - Anfänger-Themen 4
M Umwandlung von Array in Vector und umgekehrt Java Basics - Anfänger-Themen 6
E Datentypen Klasse Vector aus der Standard-API anwenden Java Basics - Anfänger-Themen 7
D Klasse Vector entwerfen Java Basics - Anfänger-Themen 7
A Arrays vs Liste vs Vector Java Basics - Anfänger-Themen 30
H in for Schleife über Vector iterieren Java Basics - Anfänger-Themen 2
S Datentypen Vector auslesen Java Basics - Anfänger-Themen 12
yampi Objektsammlung - Hashtable, Vector, Arrays Java Basics - Anfänger-Themen 8
T Vector-Positin anzeigen Java Basics - Anfänger-Themen 3
C Vector - obsolete collection Java Basics - Anfänger-Themen 1
C Vector<Object> Probleme Java Basics - Anfänger-Themen 38
C Datentypen Probleme mit Vector.contains() Java Basics - Anfänger-Themen 10
M Datentypen function(Vector<SuperClass>), Vector<Subclass> Java Basics - Anfänger-Themen 6
L Vector Sortieren Java Basics - Anfänger-Themen 8
B Vector in Table ersetzen Java Basics - Anfänger-Themen 4
B Werte einer Spalte aus DB in einen Vector schreiben Java Basics - Anfänger-Themen 15
kitz Telefonbuch (Vector) Java Basics - Anfänger-Themen 17
E Arraylist mit Daten aus Vector füllen Java Basics - Anfänger-Themen 7
S Vector -> String JComboBox Java Basics - Anfänger-Themen 11
F Vector wird überschrieben Java Basics - Anfänger-Themen 8
T Vector sortiern Java Basics - Anfänger-Themen 7
C Frage zu Vector und muliplizieren des Inhaltes Java Basics - Anfänger-Themen 2
S Vector von eigenen Klassen Java Basics - Anfänger-Themen 2
J Collection Vector Java Basics - Anfänger-Themen 8
Streeber ArrayList/Vector, mehrdimensional Java Basics - Anfänger-Themen 11
N Was ist der Unterschied zwischen ArrayList und Vector? Java Basics - Anfänger-Themen 3
babel Einen Vector/Liste mit Daten prüfen Java Basics - Anfänger-Themen 31
B Hilfe zum einem Problem mit Vector Java Basics - Anfänger-Themen 8
H Vector - Fehler? Java Basics - Anfänger-Themen 2
babel einen Vector nach Datum sortieren Java Basics - Anfänger-Themen 21
T Array-Vector Problem Java Basics - Anfänger-Themen 18
P Vector und Exception Java Basics - Anfänger-Themen 7
K Vector Java Basics - Anfänger-Themen 3
K Vector Java Basics - Anfänger-Themen 10
babel ein Vector mit verschiedenen Werten auslesen und berechnen Java Basics - Anfänger-Themen 34
T Object aus Vector übergeben Java Basics - Anfänger-Themen 2
B Vector<Point> als Rückgabewert Java Basics - Anfänger-Themen 23
L Vector einem Array hinzufügen Java Basics - Anfänger-Themen 14
P Vector mit double Java Basics - Anfänger-Themen 3
P Vector Elemente auslesen Java Basics - Anfänger-Themen 9
N Anfängerfrage richtige Syntax und Frage zu Vector Java Basics - Anfänger-Themen 7
C Unterschied zwischen ArrayList und Vector Java Basics - Anfänger-Themen 2
W Vector mit String[] auslesen Java Basics - Anfänger-Themen 4
Povlsen84 Initlialisierung, Vector, serialVersionUID . kleine Fragen Java Basics - Anfänger-Themen 4
Q Vector verändert trotz final seine Größe Java Basics - Anfänger-Themen 5
B Dopplete aus Vector entfernen Java Basics - Anfänger-Themen 8
E Vector Fehler bei allen Methoden von Vector Java Basics - Anfänger-Themen 2
K Vector zu Array machen Java Basics - Anfänger-Themen 10
1 JList Problem : Synchronisation mit Vector klappt nicht :( Java Basics - Anfänger-Themen 6
L Multidimensional Vector - Recordset Java Basics - Anfänger-Themen 5
K Objektklasse mit leerem Vector füllen Java Basics - Anfänger-Themen 6
K Vector wird überschrieben Java Basics - Anfänger-Themen 7
G Vector Strijng parsen Java Basics - Anfänger-Themen 6
K vector cannot be resolved Java Basics - Anfänger-Themen 3
G Zeichenkette suchen in Vector-Klasse Java Basics - Anfänger-Themen 11
R fehler beim incrementellen schreiben in einen vector Java Basics - Anfänger-Themen 11
M ObjectInputStream, Object und Vector<Object> Java Basics - Anfänger-Themen 4
G Vector, equal & Casts Java Basics - Anfänger-Themen 5
N Objekte in einen Vector packen oder nicht? Java Basics - Anfänger-Themen 3
D Frage zu Vector Java Basics - Anfänger-Themen 7
S Problem mit Vector Java Basics - Anfänger-Themen 2
G Object[] [] nach vector casten. Java Basics - Anfänger-Themen 3
G 2D vector zugriff auf elementinterne elemente wie Java Basics - Anfänger-Themen 3
G vector in neuem vector sortieren Java Basics - Anfänger-Themen 3
G jede 2te zeile in vector leer einfügen, wie? Java Basics - Anfänger-Themen 4
G vector füllt sich immer weiter. wo muss ich ihn leeren? Java Basics - Anfänger-Themen 3
V Vector/Arraylist hat nur gleiche Einträge Java Basics - Anfänger-Themen 3
G Vector eigenen Typs mit Daten füllen Java Basics - Anfänger-Themen 20
H Vector und Dateien Java Basics - Anfänger-Themen 27

Ähnliche Java Themen

Neue Themen


Oben