TreeSet Element löschen

Status
Nicht offen für weitere Antworten.

Enigma228

Bekanntes Mitglied
Sinn des ganzen ist es in einer TreeSet alle Personen zu halten die in einer Tabelle dargestellt werden sollen.
Nun kommt aber der Punkt, wo ich Einträge aus der Tabelle löschen möchte.. Spalte 0 beinhaltet den Index..
das heisst ich wollte die entsprechende Person (Vergleich über den Index) aus der TreeSet löschen und die TreeSet an den eine Spezielle Funktion im Model übergeben, so das die Tabelle neu dargestellt wird.

Im Quellcode möchte ich eine Person aus dem TreeSet löschen..
der Abgleich mit den Index ist ok, er kommt auch zu dem Punkt an dem er die Person in der Treeset löschen sollte, aber er tuts nicht..
hat jemand einen Idee?

Java:
for(Person p:myPersons){
                                        // Vergleich Index Person mit Tabelleneintrag
					System.out.println(""+p.getIndex()+" = "+
							rtm_listeningresults.getValueAt(t_listeningresults.getSelectedRow(), 0).toString());
					if(p.getIndex().equalsIgnoreCase(rtm_listeningresults.getValueAt(t_listeningresults.getSelectedRow(), 0).toString())){
						dp.deleteEntry(rtm_listeningresults.getValueAt(t_listeningresults.getSelectedRow(), 0).toString());
						System.out.println("Size vor: "+myPersons.size());
						myPersons.remove(p);
						System.out.println("Size nach: "+myPersons.size());
						break;
					}
				}

Ergebnis
1247396414900 = 1247396414900
Size vor: 1
Size nach: 1
 

Marco13

Top Contributor
Die Operationen im TreeSet verwenden die Vergleichsfunktionen (compareTo aus dem Comparable interface, und AFAIK equals von Object). Wenn die nicht passend zur gewünschten Sortierung implementiert sind, funktioniert das ganze nicht.
 

Enigma228

Bekanntes Mitglied
Java:
package doc;

import java.util.ArrayList;

public class Person implements Comparable<Person>{
	
	String index;
	String name, firstname, street, streetnumber, city, postcode;
	ArrayList<Msn> numbers= new ArrayList<Msn>();
	ArrayList<Mail> mails= new ArrayList<Mail>();
	
	public Person() {
		
	}
		
	public Person(String index, String name, String firstname, String street,
			String streetnumber, String city, String postcode,
			ArrayList<Msn> numbers, ArrayList<Mail> mails) {
		super();
		this.index = index;
		this.name = name;
		this.firstname = firstname;
		this.street = street;
		this.streetnumber = streetnumber;
		this.city = city;
		this.postcode = postcode;
		this.numbers = numbers;
		this.mails = mails;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getFirstname() {
		return firstname;
	}
	public void setFirstname(String firstnam) {
		this.firstname = firstnam;
	}
	public String getStreet() {
		return street;
	}
	public void setStreet(String street) {
		this.street = street;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public String getPostcode() {
		return postcode;
	}
	public void setPostcode(String postcode) {
		this.postcode = postcode;
	}
	public ArrayList<Msn> getNumbers() {
		return numbers;
	}
	public void setNumbers(ArrayList<Msn> arrayList) {
		this.numbers = arrayList;
	}
	public ArrayList<Mail> getMails() {
		return mails;
	}
	public void setMails(ArrayList<Mail> mails) {
		this.mails = mails;
	}
	
	public String getStreetnumber() {
		return streetnumber;
	}

	public void setStreetnumber(String streetnumber) {
		this.streetnumber = streetnumber;
	}


	public String getPerson(){
		String temp = new String();
		temp = getName()+", "+getFirstname()+"\n"+
			getStreet()+" "+getStreetnumber()+"\n"+
			getPostcode()+" "+getCity()+"\n";
		int n = numbers.size();
		for (int i=0;i<n;i++){
			temp = temp + numbers.get(i).getType()+" : "+numbers.get(i).getPrefix()+" "+
				numbers.get(i).getCallnumber()+" ("+numbers.get(i).getUsing()+")"+"\n";
		}
		int m = mails.size();
		for (int i=0;i<m;i++){
			temp = temp + mails.get(i).getMail()+"\n";
		}
		
		
		return temp;
	}

	public String getIndex() {
		return index;
	}

	public void setIndex(String index) {
		this.index = index;
	}

	@Override
	public int compareTo(Person p) {
		if (name.compareToIgnoreCase(p.getName())==0){
			if(firstname.compareToIgnoreCase(p.getFirstname())==0){
				if(street.compareToIgnoreCase(p.getStreet())==0){
					if(streetnumber.compareToIgnoreCase(p.getStreetnumber())==0){
						if(city.compareToIgnoreCase(p.getCity())==0){
							return 1;
						}else{return city.compareToIgnoreCase(p.getCity());}
					}else{return streetnumber.compareToIgnoreCase(p.getStreetnumber());}
				}else{return street.compareToIgnoreCase(p.getStreet());}
			}else{return firstname.compareToIgnoreCase(p.getFirstname());}
		}else{return name.compareToIgnoreCase(p.getName());}
	}
	
	

}
 

Marco13

Top Contributor
Beim ersten Blick auf compareTo: "Wenn alles gleich ist (also alle unter-Vergleiche 0 zurückgeben) dann behaupte, dass die Personen NICHT gleich sind (also gib 1 zurück)".

Wenn das nicht hilft, muss ich wohl doch mal schauen, ob das compilierbar ist...
 

Enigma228

Bekanntes Mitglied
die Treeset sortiert ja auch richtig, wenn ich einen neuen Eintrag mache. Also spielt das Comparable keine Rolle oder..
das Interface sorgt doch nur dafür das Objekte vergleichbar sind zum sortieren..

und er hat ja auch die richtige Person zum löschen gefunden.. bloss remove funkt. nicht..
 

Marco13

Top Contributor
Zwei gleiche Personen und zwei identische Pesonen in die TreeSet eingefügt, ergibt eine TreeSet mit Größe 3. Sollte aber Größe 1 sein.
Java:
class PersonTest
{
    public static void main(String args[])
    {
        Person p0 = new Person("0", "Name", "FirstName", "Street", "No. 123", "City", 
            "12345", new ArrayList<Msn>(), new ArrayList<Mail>());
        Person p1 = new Person("0", "Name", "FirstName", "Street", "No. 123", "City",
            "12345", new ArrayList<Msn>(), new ArrayList<Mail>());
        Person p2 = p0;

        Set<Person> set = new TreeSet<Person>();

        set.add(p0);
        set.add(p1);
        set.add(p2);

        System.out.println(set);
    }

}

Die Methode "compareTo" stellt SEHR strenge Anforderungen an die Art, wie sie implementiert ist: Comparable (Java Platform SE 6) - und diese Anforderungen sind bei deiner Implementierung nicht erfüllt. (<-Punkt).

Wenn sie erfüllt wären, würde die TreeSet auch funktionieren (wobei ich glaube, dass man "equals" noch richtig überschreiben müßte (und damit auch hashCode, auch wenn das hier im Moment nicht benutzt wird)).
 

Enigma228

Bekanntes Mitglied
Trotzdem wird der Eintrag in der TreeSet nicht gelöscht

Java:
package doc;

import java.util.ArrayList;

public class Person implements Comparable<Person>{
	
	String index;
	String name, firstname, street, streetnumber, city, postcode;
	ArrayList<Msn> numbers= new ArrayList<Msn>();
	ArrayList<Mail> mails= new ArrayList<Mail>();
	
	public Person() {
		
	}
		
	public Person(String index, String name, String firstname, String street,
			String streetnumber, String city, String postcode,
			ArrayList<Msn> numbers, ArrayList<Mail> mails) {
		super();
		this.index = index;
		this.name = name;
		this.firstname = firstname;
		this.street = street;
		this.streetnumber = streetnumber;
		this.city = city;
		this.postcode = postcode;
		this.numbers = numbers;
		this.mails = mails;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getFirstname() {
		return firstname;
	}
	public void setFirstname(String firstnam) {
		this.firstname = firstnam;
	}
	public String getStreet() {
		return street;
	}
	public void setStreet(String street) {
		this.street = street;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public String getPostcode() {
		return postcode;
	}
	public void setPostcode(String postcode) {
		this.postcode = postcode;
	}
	public ArrayList<Msn> getNumbers() {
		return numbers;
	}
	public void setNumbers(ArrayList<Msn> arrayList) {
		this.numbers = arrayList;
	}
	public ArrayList<Mail> getMails() {
		return mails;
	}
	public void setMails(ArrayList<Mail> mails) {
		this.mails = mails;
	}
	
	public String getStreetnumber() {
		return streetnumber;
	}

	public void setStreetnumber(String streetnumber) {
		this.streetnumber = streetnumber;
	}


	public String getPerson(){
		String temp = new String();
		temp = getName()+", "+getFirstname()+"\n"+
			getStreet()+" "+getStreetnumber()+"\n"+
			getPostcode()+" "+getCity()+"\n";
		int n = numbers.size();
		for (int i=0;i<n;i++){
			temp = temp + numbers.get(i).getType()+" : "+numbers.get(i).getPrefix()+" "+
				numbers.get(i).getCallnumber()+" ("+numbers.get(i).getUsing()+")"+"\n";
		}
		int m = mails.size();
		for (int i=0;i<m;i++){
			temp = temp + mails.get(i).getMail()+"\n";
		}
		
		
		return temp;
	}

	public String getIndex() {
		return index;
	}

	public void setIndex(String index) {
		this.index = index;
	}

	@Override
	public int compareTo(Person p) {
		if (name.compareToIgnoreCase(p.getName())==0){
			if(firstname.compareToIgnoreCase(p.getFirstname())==0){
				if(street.compareToIgnoreCase(p.getStreet())==0){
					if(streetnumber.compareToIgnoreCase(p.getStreetnumber())==0){
						if(city.compareToIgnoreCase(p.getCity())==0){
							return 1;
						}else{return city.compareToIgnoreCase(p.getCity());}
					}else{return streetnumber.compareToIgnoreCase(p.getStreetnumber());}
				}else{return street.compareToIgnoreCase(p.getStreet());}
			}else{return firstname.compareToIgnoreCase(p.getFirstname());}
		}else{return name.compareToIgnoreCase(p.getName());}
	}

	@Override
	public boolean equals(Object obj) {
		Person p = (Person)obj;
		return getIndex().equals(p.getIndex());
	}

	@Override
	public int hashCode() {
		return index.hashCode();
	}
}
 

Marco13

Top Contributor
Compareto ist noch genauso wie vorher. Gib' da mal nicht 1 sondern 0 zurück, vielleicht geht es dann schon, wenn nicht schau' ich noch mal.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Objete von Polygon mit TreeSet verwalten Java Basics - Anfänger-Themen 1
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
R TreeSet Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 8
J Klassen HashSet, TreeSet: unregelmäßige Zahlenreihen beim Befüllen Java Basics - Anfänger-Themen 7
J Objecte in TreeSet einfügen klappt nicht Java Basics - Anfänger-Themen 5
G Laufzeit/ O/Θ-Notation einer Treeset Methode Java Basics - Anfänger-Themen 0
J TreeSet mit compareTo sortieren Java Basics - Anfänger-Themen 2
W Add zu TreeSet Probleme Java Basics - Anfänger-Themen 6
T TreeSet sortiert in ein anderes kopieren Java Basics - Anfänger-Themen 2
Todesbote Treeset - Wenn bestimmtes Objekt vorkommt Counter erhöhen Java Basics - Anfänger-Themen 6
Todesbote Map<String, Treeset> aus Treeset bestimmten Wert auslesen Java Basics - Anfänger-Themen 4
A Treeset per For-Schleife durchlaufen Java Basics - Anfänger-Themen 2
U TreeSet und Komparatoren Java Basics - Anfänger-Themen 6
B Object "Method" in TreeSet, Fehler beim Vergleichen/Comparable Java Basics - Anfänger-Themen 9
B Lotto mittels TreeSet Java Basics - Anfänger-Themen 3
D Datentypen TreeSet aus einer List<String[]> befüllen Java Basics - Anfänger-Themen 18
M Treeset sortieren und ausgeben Java Basics - Anfänger-Themen 17
K TreeSet Sortieren Java Basics - Anfänger-Themen 6
T treeSet durchsuchen Java Basics - Anfänger-Themen 2
R Sortieren TreeSet Java Basics - Anfänger-Themen 2
G HashSet vs. TreeSet Java Basics - Anfänger-Themen 3
M Problem beim Löschen des ersten Eintrags einer TreeSet Java Basics - Anfänger-Themen 3
J TreeSet methode Remove Java Basics - Anfänger-Themen 13
M TreeSet sortieren Java Basics - Anfänger-Themen 13
C Maximal-Anzahl von Objekten in TreeSet Java Basics - Anfänger-Themen 7
S TreeSet und StringTokenizer Java Basics - Anfänger-Themen 6
K Wie kann ich ein Element an den Anfang setzten ? Java Basics - Anfänger-Themen 1
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
heinrich172 Methoden Trotz gleichem Element stimmt Vergleich nicht? Java Basics - Anfänger-Themen 7
I Element n aus Datenbank Query (JPA / Hibernate) Java Basics - Anfänger-Themen 3
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
O Doppelt verkette Liste Element löschen Java Basics - Anfänger-Themen 15
L Längstes Element einer ArrayList ausgeben Java Basics - Anfänger-Themen 9
I Letztes, erstes Element vom Array Java Basics - Anfänger-Themen 9
districon Element in Liste einfügen Java Basics - Anfänger-Themen 1
Y Wie kann ich ein Element in einer toString finden. Java Basics - Anfänger-Themen 2
J Element aus Liste nehmen Java Basics - Anfänger-Themen 3
S Gibt es ein simples JWebbrowser Element? Java Basics - Anfänger-Themen 6
M Letztes Element einer ArrayList Java Basics - Anfänger-Themen 12
S Streams - kleinstes Element finden Java Basics - Anfänger-Themen 4
V_Fynn03 Beliebiges Element in einer Liste löschen (Java)(Lineare Datenstrukturen) Java Basics - Anfänger-Themen 9
V_Fynn03 Lineare Datenstrukturen Element löschen? Java Basics - Anfänger-Themen 2
J Selektiertes Element von jComboBox zwischenspeichern und wieder einsetzen Java Basics - Anfänger-Themen 0
Curtis_MC Collections Zufälliges Element aus Stack Java Basics - Anfänger-Themen 2
M Ist es möglich, das größte und zweitgrößte element in einem Array mit nur einer Schleife ausfindig zu machen ? Java Basics - Anfänger-Themen 19
X Array erstes und letztes Element tauschen Java Basics - Anfänger-Themen 2
A Konsolenausgabe: Hinter letztes Element ein "}" Java Basics - Anfänger-Themen 2
F nur das erste Element mit iterator ausgeben Java Basics - Anfänger-Themen 5
O Element aus Array löschen Java Basics - Anfänger-Themen 5
I Methoden List.contains() beim 2. Element = true Java Basics - Anfänger-Themen 1
M Array immer wieder um ein Element erweitern Java Basics - Anfänger-Themen 6
AnnaBauer21 org.w3c.dom.Element - Neues Element hinzufügen Java Basics - Anfänger-Themen 4
D doc.seect jsouo bestimmtes class element finden Java Basics - Anfänger-Themen 1
D Selenium Webdrive get x Element Java Basics - Anfänger-Themen 14
W Element aus HashSet in String umformen Java Basics - Anfänger-Themen 7
S Einfach verkettete Liste Element an bestimmter Position einfügen Java Basics - Anfänger-Themen 24
B Element in Array nach unten verschieben Java Basics - Anfänger-Themen 11
TechGirl JAVA GUI Oberfläche Umkreisung - wie heißt dieses Element? Java Basics - Anfänger-Themen 2
B Methoden Element aus einem Array löschen, Rest nach vorne verschieben? Java Basics - Anfänger-Themen 4
Z Html Element aus der Webseite auslesen Java Basics - Anfänger-Themen 1
A Hash Tabelle Element suchen Java Basics - Anfänger-Themen 1
K Collections Zugriff auf ein bestimmtes Element in der Collection Java Basics - Anfänger-Themen 1
K Element in ArrayList löschen ohne Index zu verschieben Java Basics - Anfänger-Themen 2
J Variablen Strings mit Zeilenumbrüchen in neues Array Element Java Basics - Anfänger-Themen 1
W Größtes Element im unsortierten Binärbaum Java Basics - Anfänger-Themen 7
S Günstigstes Element aus einer ArrayList ausgeben Java Basics - Anfänger-Themen 10
N ArrayList: Das zweite Element wird zur Liste nicht eingefügt nach dem zweiten request. Java Basics - Anfänger-Themen 3
Ruvok Prüfen ob bestimmtest Element existiert im Array Java Basics - Anfänger-Themen 11
A ResultSet: vorheriges Element auslesen Java Basics - Anfänger-Themen 10
F Element aus LinkedList löschen Java Basics - Anfänger-Themen 3
J Element zu jList hinzufügen NullPointerExcepetion Java Basics - Anfänger-Themen 2
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
V wie kann man am einfachsten für ein Element der JavaFX die Umrandung aktiwieren ? auch ohne css ? Java Basics - Anfänger-Themen 4
D Fehlermeldung "com.element.JavaUpload.Manager" Java Basics - Anfänger-Themen 1
S Element von List<E> in String umwandeln Java Basics - Anfänger-Themen 3
I Element löschen aus der Liste Java Basics - Anfänger-Themen 2
G element in ArrayList Hinzufügen Java Basics - Anfänger-Themen 16
M ArrayList-Element hinzufügen u. löschen Java Basics - Anfänger-Themen 2
H Möglichkeit, mehrere Element zu speichern Java Basics - Anfänger-Themen 8
P Element aus einer einelementigen Menge bekommen. Java Basics - Anfänger-Themen 8
M Letztes Element im Array finden Java Basics - Anfänger-Themen 3
R Mit iterator auf Element zugreifen Java Basics - Anfänger-Themen 2
G Element einem Array hinzufügen Java Basics - Anfänger-Themen 7
Madlip Erste Schritte Das 4. Element?!? Java Basics - Anfänger-Themen 2
B Erstes Element eines Vectors erhalten Java Basics - Anfänger-Themen 5
Q queue.remove Element trotzdem noch vorhanden. Java Basics - Anfänger-Themen 10
H Zugriff auf Vector Element Java Basics - Anfänger-Themen 2
N Array, Element in Array? Java Basics - Anfänger-Themen 8
I Liste Remove erstes Element Java Basics - Anfänger-Themen 5
M Map mit Vektor: Element hinzufügen Java Basics - Anfänger-Themen 21
M element aus DB lesen Java Basics - Anfänger-Themen 4
C Variablen array element hinzufügen/entfernen Java Basics - Anfänger-Themen 10
K Letzter element aus einem Array Java Basics - Anfänger-Themen 5
S JDBC MySQL Connector - Element mit ' eintragen? Java Basics - Anfänger-Themen 4
R Element an ArrayList<int[]> "anonym" adden? Java Basics - Anfänger-Themen 3
Glühwürmchen Prüfen ob Element in ArrayList Java Basics - Anfänger-Themen 23
C Ausgewähltes Element einer JCombobox in JTextField Java Basics - Anfänger-Themen 3
L Element in Mitten eines Arrays einfügen Java Basics - Anfänger-Themen 3
S ArrayList nur ergänzen wenn Element noch nicht vorhanden Java Basics - Anfänger-Themen 4
3 3. Element mit regulären Ausdruck suchen Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben