TreeSet exception bei add

Status
Nicht offen für weitere Antworten.
M

Marco_adv

Gast
Hallo ich habe ein Problem mit meinem Treeset und zwar möchte ich ich dieser Mehtode:
Code:
	private void loadRights(String userId) throws SQLException {
		userRights = new TreeSet<RightsForUser>();
		Iterator i = connection.getAuthorisation(userId).iterator();
		while(i.hasNext()) {
			RightsForUser right = (RightsForUser) i.next();
			userRights.add(right);
		}
	}

die ausgelesenen Rechte des Users in einen Treeset speichern, dazu habe ich die quals methode in RightsForUser implimentiert diese sieht wie folgt aus:
Code:
public boolean equals(Object rightsforUser) {
		if (this == rightsforUser) {
			return true;

		}
		if (!(rightsforUser instanceof RightsForUser)) {
			return false;
		}
		RightsForUser userRights = (RightsForUser) rightsforUser;

		if ((this.getLevel().equals(userRights.getLevel()))
				&& (this.getRight().equals(userRights.getRight()))) {
			return true;
		}
		return false;
	}

nun bekomme ich eine classcast exception un der Methode RightsForUser kann mir jemand weiter helfen ? gruß Marco
 

MatthiasKnorr

Aktives Mitglied
Wo genau entsteht denn die Exception?
Gib mal vor dem Cast die Klasse des Objekts aus, welches du casten möchtest.

Grüße,
Matthias
 

byte

Top Contributor
Du verhinderst durch das Überschreiben der equals ja nicht, dass auch Objekte eines andere Typs als RightsForUser in das Set mit aufgenommen werden. Du musst also entweder ein typisiertes Set<RightsForUser> verwenden (Java SE 5 oder höher) oder Du musst in der loadRights explizit prüfen, ob das vom Iterator gelieferte Objekt auch vom Typ RightsForUser ist, bevor Du castest.

Edit: OK, hab nicht richtig hingeguckt. Du verwendest ja ein typisiertes Set, aber verwendest den alten Iterator. Du brauchst einen Iterator<RightsForUser> oder musst halt entsprechend die Überprüfung mit instanceof vor dem Casten machen.
 
M

Marco_adv

Gast
Kann es sein dass die Class RightsForUser Comparable implementieren muss?
 

byte

Top Contributor
Das macht bei TreeSet durchaus Sinn, hat aber prinzipiell erstmal nichts mit einer ClassCastException zu tun.
 
M

Marco_adv

Gast
Doch nun bekommt er keine ClassCastException mehr es wird aber nur ein Object in den TreeSet geschrieben also muss ich nicht mit equals arbeiten sondern mit compareTo oder?
 

MatthiasKnorr

Aktives Mitglied
Versteh ich nicht.
Wieso kommt jetzt keine Exception mehr nur weil die Objekte comparable sind.
Die Exception kann doch eigentlich nur in Zeile 6 auftreten.
 
M

Marco_adv

Gast
Ja nur weil die Objecte comparable sind kommt nun keine Exception mehr. Nun versuche ich aber comarable noch zu implementieren, damit ich prüfen kann ob das objekt schon im TreeSet steht doch da weiß ich nicht ganz weiter nur dass result 0 equals bedeutet und aloles andere nicht gleich. kann mir hier noch jemand helfen?
 

byte

Top Contributor
Wildcard hat gesagt.:
In ein TreeSet dürfen nur Comparable Objekte eingefügt werden wenn kein Comparator übergeben wird.

Achso, dachte er nimmt dann die "Natural Order", wenn man keinen angibt. Aber macht natürlich Sinn so. :)
 

Wildcard

Top Contributor
Die natural order muss ja bestimmt werden, und das wird mit dem Comparable Interface gelöst :wink:
Allerdings hätte man das wirklich etwas expliziter hinschreiben können.
 
M

Marco_adv

Gast
kann man ja nicht wissen aber auf jedefall funktioniert alles danke für eure antworten
 

byte

Top Contributor
Wildcard hat gesagt.:
Die natural order muss ja bestimmt werden, und das wird mit dem Comparable Interface gelöst :wink:
Allerdings hätte man das wirklich etwas expliziter hinschreiben können.

Ich hätte jetzt gedacht, er ordnet dann im Zweifelsfall nach Hash oder so, aber ergibt ja auch keinen Sinn, wenn man drüber nachdenkt. :)


Imo sollte Sun aber echt gewissen "Constraints" in der Javadoc besser hervorheben. Gibt genug Beispiele, wo imo wichtige Informationen irgendwo im Text verschwindet. Zum Beispiel könnte man in Vector mit riesigen blinkenden Buchstaben drüber schreiben: Ich bin böse! Benutz mich nur mit Java Version 1.0 oder Legacy Code. ;)
 

Wildcard

Top Contributor
Vector ist so schlimm ja nicht. Synchronisiert ist nicht grundsätzlich was schlechtes und macht auch nicht so wahnsinnig viel an der Performance aus.
Problematisch ist der Vector nur wenn man ihn nicht über das Interface anspricht, sondern über elementAt usw. weil er dann nicht mehr so einfach austauschbar ist.
 

byte

Top Contributor
Ich meine mal gelesen zu haben, dass Vector nicht nur wegen der Synchronisation langsamer sein soll. Bin mir über die Quelle aber nicht mehr sicher, war glaube ich in Thinking in Java.
 

Wildcard

Top Contributor
Ich weiß nicht wie er früher ausgesehen hat, und ich weiß nicht wie er heute implementiert ist, aber ich bin davon überzeugt das er mittlerweile nahezu identisch mit ArrayList ist (bis auf die Synchronisierung).
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Collections Fragen zu gleichen Elementen in TreeSet Allgemeine Java-Themen 35
T Collections TreeSet.contains ruft nicht .equals? Allgemeine Java-Themen 4
B TreeSet-Ausgeben Allgemeine Java-Themen 8
B Collections TreeSet/TreeMap, doppelte Einträge zulassen ? Allgemeine Java-Themen 11
K Collections TreeSet beinhaltet Objektleichen Allgemeine Java-Themen 26
S TreeSet - Comparator ändern -> resort? Allgemeine Java-Themen 8
M Vergleich von TreeSet<HashSet>^2 Allgemeine Java-Themen 8
H Problem beim Sortieren einer HashMap mit TreeSet Allgemeine Java-Themen 4
A Effizienzfrage bei TreeSet / XML-Verarbeitung Allgemeine Java-Themen 8
C TreeSet mit Objekten befüllen Allgemeine Java-Themen 12
J TreeSet und Comparator will nicht so wie ich Allgemeine Java-Themen 2
J unsortiertes Treeset Allgemeine Java-Themen 2
J TreeSet neues TreeSet aufbauen Allgemeine Java-Themen 8
S Verhalten der Klasse TreeSet... Allgemeine Java-Themen 4
S TreeSet benötigt zu viel Speicher Allgemeine Java-Themen 5
André Uhres BigDecimal in HashSet eingefügt, aber nicht in TreeSet Allgemeine Java-Themen 2
E Statt HashSet die TreeSet verwenden Allgemeine Java-Themen 4
G TreeSet ändert sich bei Änderungen nicht! Allgemeine Java-Themen 15
M Fehler in TreeSet.remove() Allgemeine Java-Themen 6
B String Array aus TreeSet Allgemeine Java-Themen 6
T TreeSet neu sortieren Allgemeine Java-Themen 4
H Object cast exception Allgemeine Java-Themen 7
W Queue.remove() -> no such element exception Allgemeine Java-Themen 17
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
N Kann ich die Nullpointer Exception umgehen Allgemeine Java-Themen 12
N A java Exception has occured Allgemeine Java-Themen 8
G javafx "class path" exception Allgemeine Java-Themen 5
H Interface PluginSystem ClassNotFound exception für library Klassen Allgemeine Java-Themen 10
tom.j85 Exception bei Abfrage von Ländercodes in API? Allgemeine Java-Themen 13
S Exception Allgemeine Java-Themen 5
LimDul Streams und Exception Allgemeine Java-Themen 8
C FileLock - Exception wird immer geworfen Allgemeine Java-Themen 4
S Wertbeschränkung Exception oder Anpassung? Allgemeine Java-Themen 4
D Nullpointer Exception Problem Allgemeine Java-Themen 5
Kirby.exe Nullpointer Exception bei Queue Allgemeine Java-Themen 5
R Schlüsselworte "Throw new exception" gibt nicht den String als Fehlermeldung aus Allgemeine Java-Themen 2
P Swing Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: npoints > xpoints.length || npoints > ypoints.length Allgemeine Java-Themen 5
S RMI Exception Allgemeine Java-Themen 0
S MSSQL Exception & Connection String Allgemeine Java-Themen 19
S Interface, generischer Datentyp, Exception? Allgemeine Java-Themen 3
coolian warum bekomme ich ein string index out of bounds exception Allgemeine Java-Themen 17
B Aufruf der Methode ergibt eine Exception Allgemeine Java-Themen 13
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
M Klassen Serializable Exception Allgemeine Java-Themen 1
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
E Thread Exception Allgemeine Java-Themen 6
javaerd Binomialkoeffizient ausrechnen, Exception in thread "main" java.lang.StackOverflowError Allgemeine Java-Themen 6
M xlsx File auslesen Exception occured Allgemeine Java-Themen 13
X jvm exception abfangen und an externes Programm schicken Allgemeine Java-Themen 4
G Java/LibGDX File Loading Exception Allgemeine Java-Themen 2
B Exception in Application init method Allgemeine Java-Themen 5
H OOP Testen einer Exception mit JUnit Allgemeine Java-Themen 8
M javafx ComboBox- Nullpointer Exception Allgemeine Java-Themen 6
perlenfischer1984 Dialect class not found exception Allgemeine Java-Themen 15
Thallius Bekomme keine Exception mit Stacktrace mehr. Was habe ich getan? Allgemeine Java-Themen 13
perlenfischer1984 Functionsparameter prüfen und eine Exception werfen !? Allgemeine Java-Themen 11
E Probleme mit nextInt() und Exception Allgemeine Java-Themen 35
Z Exception wird nicht ausgelöst Allgemeine Java-Themen 2
0 Animiertes Gif anzeigen - NullPointer Exception Allgemeine Java-Themen 19
T Konstruktor löst exception aus Allgemeine Java-Themen 7
KilledByCheese Dezimal nach Hexadezimal rechner wirft seltsame exception Allgemeine Java-Themen 4
V Compiler-Fehler Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 125, Size: 125 Allgemeine Java-Themen 11
D Codeausführung bevor Exception abgeschlossen ist Allgemeine Java-Themen 11
T FileNotFound Exception Allgemeine Java-Themen 9
L Exception/Error auf JDialog umleiten Allgemeine Java-Themen 2
C Arithmetic Exception, obwohl nichts 0 ist Allgemeine Java-Themen 5
M A Java Exception has occured. Allgemeine Java-Themen 1
J Exception in thread "main" java.lang.NoClassDefFoundError Allgemeine Java-Themen 4
M Exception in thread "AWT-EventQueue-0" Allgemeine Java-Themen 6
P Input/Output java.util.Scanner in einer Schleife und Exception-Behandlung: Einlesen einer Zahl Allgemeine Java-Themen 4
E A Java Exception Has Occured Allgemeine Java-Themen 4
T Exception handling Allgemeine Java-Themen 7
P lazy loading exception Allgemeine Java-Themen 0
A Interpreter-Fehler OutOfMemory Exception mit Base64 decode Allgemeine Java-Themen 3
S Java Applet Crash - Keine Exception Allgemeine Java-Themen 8
S Best Practice verschiedene Exceptions fangen und neue Exception erzeugen Allgemeine Java-Themen 11
K Exception in thread "AWT-EventQueue-1" Allgemeine Java-Themen 2
K Gepacktes Jar-File gibt beim Doppelklick eine Exception aus Allgemeine Java-Themen 4
P Eigene Exception Klasse Allgemeine Java-Themen 7
N Java Interne Exception Allgemeine Java-Themen 4
B JUnit4 Exception-Test Allgemeine Java-Themen 4
127.0.0.1 SQL Exception, kein Driver Allgemeine Java-Themen 9
S Erste Schritte Exception beendet Schleife nicht - Methode macht trotz throw weiter? Allgemeine Java-Themen 9
R ZIP FileSystem unter Windows wirft exception Allgemeine Java-Themen 7
H java.util.Timer und Funktion mit SQL Exception Allgemeine Java-Themen 5
Ollek Barcode mit Barcode4J erzeugen - Exception Allgemeine Java-Themen 4
Z Concurrent Modification Exception - HashMap (kein remove) Allgemeine Java-Themen 4
E Eigene Exception Klasse erstellen Allgemeine Java-Themen 3
L Variablen IO Exception weil File angeblich nicht exisitert Allgemeine Java-Themen 10
T Exception versus Rückgabeparamter Allgemeine Java-Themen 26
S Exception enableDepthTest Allgemeine Java-Themen 7
M JAXB Reimport zu Hibernate DB -> Exception Allgemeine Java-Themen 3
W Kleine Frage zu Null-Pinter-Exception Allgemeine Java-Themen 21
aze JUnit: Testen ob bestimmte Exception nicht auftritt Allgemeine Java-Themen 18
S Null Pointer Exception bei BufferedReader Allgemeine Java-Themen 4
N Runtime.exec() Exception Problem Allgemeine Java-Themen 3
P Default constructor cannot handle exception type Allgemeine Java-Themen 6
M Objekt prüfen auf null ->Invocation Target Exception??? Allgemeine Java-Themen 2
S Bildaufbau durch Servlet -> Exception Allgemeine Java-Themen 11
E Queue: Wie kann hier ein null-Pointer Exception auftreten?! Allgemeine Java-Themen 11

Ähnliche Java Themen

Neue Themen


Oben