Durchlaufen von Sets

Status
Nicht offen für weitere Antworten.
M

maveee

Gast
Hallo ,

ich hab ne Klasse (subject) die eine ObjektVariable (x) enthält . nun hab ich auch ein Set von dieser Klasse (subject ) nämlich Set<subject>

jetzt will ich alle Elemente von diesem Set vergleichen und den objekt(subject) mit dem kleinsten (x) zurückgeben.wie kann ich das machen ?

meine idee war mit Iterator das Set zu durchlaufen ...aber ich weiß nicht genau wie

danke
 
M

maveee

Gast
erstmal danke ... aber es gibt keinen grund aggressiv zu sein ...

und mir gehts darum, auf die variable (x) zu zugreifen nicht auf ein element des Sets ....

das heißt Iterator muß das Set durchlaufen und eine { get x } methode benutzen ....

das ist mein problem ! ....

danke nochmal !
 
S

SlaterB

Gast
agressiv = normal, daher kein Grund nötig ;)
(schaue auch gerade Dr. House, daran kann's liegen)

x liegt in den Objekten des Sets, daher musst du erstmal auf die Elemente des Sets zugreifen und dann auf die x darin
 
M

maveee

Gast
danke für die schnelle Antwort ...

also bei mir siehts so aus :

Java:
  Subject getMinimalx (Set<Subject> N) 
    {
       
      Subject Gesucht ;
      Iterator it = N.iterator () ; 
      
      while (it.hasNext()){
          
          if ( Gesucht.getX() > it.next().getX() )    //Das hier kann ich nicht verstehen ...dieses (it.next() ist mir n bisschen komisch und ich kann damit nicht umgehen 
              {Gesucht = it.next() ; }
        }
           return     Gesucht ;         

            }


danke
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
it.next() liefert das nächste Element in der Liste, was könnte es einfacheres geben?

natürlich solltest du es nicht zweimal aufrufen, denn jeder Aufruf liefert ein anderes/ das nächste Objekt,
also nur einmal pro Schleifendurchlauf, und in einer Variablen speichern,
der getX() Aufruf klappt doch soweit oder?

Problem ist dann noch, dass Gesucht anfangs null ist,
Gesucht.getX() führt zu einer NullPointerException,

vergleiche das mit dem echten Leben, um die größte von 5 Tomaten auszuwählen vergleichst du je zwei, aber was machst du am Anfang?


Variablen unbedingt klein schreiben!
 
M

maveee

Gast
ich bin mir nicht sicher aber ist das jetzt besser ? !!! obwohl dass ich n "Compiler Warning " bekomme ...."unsafe or unchecked operations "

Java:
public Subject getMinimalx (Set<Subject> n) 
    {
       
      Subject gesucht = new Subject ("") ; 
      Iterator it = n.iterator () ; 
      
      while (it.hasNext()){

           Subject temp = it.next() ; 

          if ( gesucht.getX() > temp.getX() )   
              {gesucht = temp ; }
           }
           return gesucht ;         
 
        }
 
Zuletzt bearbeitet von einem Moderator:

SchonWiederFred

Bekanntes Mitglied
Den Algorithmus, den Du da nachprogrammierst, gibt es bereits als Collections.min
Java:
public Subject getMinimalX(Collection<? extends Subject> subjekte)
{
	return Collections.min(subjekte, new Comparator<Subject>()
	{
		public int compare(Subject a, Subject b)
		{
			int x = a.getX();
			int y = b.getX();
			return (x < y) ? -1 : (x > y) ? +1 : 0;
		}
	});
}
 
M

maveee

Gast
Hallo ,

danke SchonWiederFred , ich bin Java Anfänger , und ich hab nur seit kurzem mit Collections und Sets zu tun , kannste mal n bisschen erklären was deine Idee da ist ? , die ersten 2 Zeilen vielleicht ? .... also der Methode wird ein Collection übergeben ?(bei mir muss der Methode ein Set übergeben werden ), und was ist dieses "Retrun" in der zweiten Zeile ...?

Danke
 

mvitz

Top Contributor
...kannste mal n bisschen erklären was deine Idee da ist ?
Ich versuche es einfach mal :D
.... also der Methode wird ein Collection übergeben ?(bei mir muss der Methode ein Set übergeben werden )

Das Set Interface erbt von Collection, siehe auch Set (Java Platform SE 6) dementsprechend hast du damit kein Problem.

..., und was ist dieses "Retrun" in der zweiten Zeile ...?...

Damit returned man das Ergebnis der Methode Collections (Java Platform SE 6)). Dieser übergibt man die Collection, aus der man das Minimum ermitteln möchte und einen Comparator. Dieser Comparator, weiß, wie man zwei Objekte vergleicht.
Was jetzt hier noch gemacht wird, ist das er mit
Java:
new Comparator<Subject>() {...}
direkt dort wo er die Klasse braucht sie Implementiert.
Man könnte auch selber eine Klasse schreiben.
Java:
public class SubjectComparator implements Comparator<Subject> {...}
Dieses interface erwartet, dass man die Methode:
Java:
public int compare(T a, T b);
überschreibt. Dein T ist in diesem Falle halt Subject. Die Methode vergleicht also zwei Object miteinander. Wenn das erste kleiner ist muss der Rückgabewert < 0 sein, ist das erste größer muss der Rückgabewert > 0 sein, sind beide gleich muss 0 zurückgegeben werden. Genau dies wird auch gemacht, nur dass er dies in eine Zeile gepackt hat mit einem erweiterten If-Konstrukt.
Jetzt wo der Comparator weiß, wie er zwei Subject vergleicht, macht er dies für alle Werte, merkt sich das Minimum und gibt dir am Schluss dieses zurück.

Insofern erspart dir diese Methode dich um das vergleichen aller Subject zu kümmern und auch das speichern des Minimums entfällt. Du musst halt nur implementieren, wie man zwei Subject miteinander vergleichen kann.

Hoffe du hast jetzt mehr verstanden.
 
M

maveee

Gast
danke an euch alle .... ich probier jetzt n bisschen mal rum so dass ich alles 100% nachvollziehen kann .
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Bugs Bunny Fehlerhafte Berechnung beim erneuten Durchlaufen der Schleife Java Basics - Anfänger-Themen 5
1 Array rekursiv durchlaufen Java Basics - Anfänger-Themen 8
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
K Erste Schritte Wie schnell ist LinkedHashMap im Vergleich zur ArrayList, wenn alle Entries durchlaufen werden? Java Basics - Anfänger-Themen 47
TimoN11 Array -> Schleife wieder von vorne durchlaufen lassen Java Basics - Anfänger-Themen 1
E Timer trotz erwartender Eingabe durchlaufen lassen Java Basics - Anfänger-Themen 11
E Baum pfadweise durchlaufen Java Basics - Anfänger-Themen 11
S Array X-mal durchlaufen und dann N-mal durchlaufen Java Basics - Anfänger-Themen 20
W Eigener Iterator soll mehrdimensionales Array durchlaufen Java Basics - Anfänger-Themen 4
B Klassen Alle Unter-Objekte durchlaufen in der Hauptklasse Java Basics - Anfänger-Themen 10
I Methoden Schleife immer wieder durchlaufen lassen Java Basics - Anfänger-Themen 15
S Rekursives Durchlaufen eines Verzeichnisses - AccessDeniedException behandeln Java Basics - Anfänger-Themen 1
T Objekt-Arrays mit einer Schleife durchlaufen/ausgeben Java Basics - Anfänger-Themen 2
B Durchlaufen von Hashmap und Arraylist Java Basics - Anfänger-Themen 8
B OOP Liste durchlaufen Java Basics - Anfänger-Themen 12
G Mehrere If-else-Sätze der Reihe nach durchlaufen lassen Java Basics - Anfänger-Themen 2
C Laufzeitverhalten beim zeilenweise durchlaufen eines 2 dimensional array Java Basics - Anfänger-Themen 6
W If_Bedingung in statischer Methode beim zweiten Mal nicht durchlaufen Java Basics - Anfänger-Themen 14
L Klassen nacheinander durchlaufen? Java Basics - Anfänger-Themen 5
A do while Schleife wird 2 mal durchlaufen Java Basics - Anfänger-Themen 3
J Baum rekursiv durchlaufen Java Basics - Anfänger-Themen 2
K Stammbaum durchlaufen (Iteration etc) Java Basics - Anfänger-Themen 9
D HashMap Keys durchlaufen Java Basics - Anfänger-Themen 2
R Switch: Nach durchlaufen des Case wieder zum Menü Java Basics - Anfänger-Themen 3
S Methoden Return Anweisung beendet Methode nicht, stattdessen wird diese zweimal durchlaufen Java Basics - Anfänger-Themen 3
A Array wird nicht durchlaufen Java Basics - Anfänger-Themen 10
A Treeset per For-Schleife durchlaufen Java Basics - Anfänger-Themen 2
K Objektbaum durchlaufen Java Basics - Anfänger-Themen 7
S Erfahrungswerte von schnelles durchlaufen von Listen mit 2 Werten Java Basics - Anfänger-Themen 10
A Datentypen Iterator von hinten nach vorne durchlaufen Java Basics - Anfänger-Themen 4
M Zweidimensionales Array durchlaufen Java Basics - Anfänger-Themen 4
C dynamische JTextFields durchlaufen Java Basics - Anfänger-Themen 5
J äußere for schleife wird nur einmal durchlaufen Java Basics - Anfänger-Themen 8
T Datentypen Verschachtelte Map durchlaufen Java Basics - Anfänger-Themen 4
N Map Durchlaufen Java Basics - Anfänger-Themen 20
R Fehler in Rekursion (Unterordner durchlaufen) Java Basics - Anfänger-Themen 2
J Problem Arraylist durchlaufen Java Basics - Anfänger-Themen 7
K methode wird nur einmal korrekt durchlaufen Java Basics - Anfänger-Themen 4
B Array durchlaufen und sortieren Java Basics - Anfänger-Themen 9
N HashMap mit Iterator durchlaufen Java Basics - Anfänger-Themen 11
P Klassen-konstanten durchlaufen Java Basics - Anfänger-Themen 9
H Monat durchlaufen Java Basics - Anfänger-Themen 2
W Textfiles durchlaufen Java Basics - Anfänger-Themen 11
M Durchlaufen eines Verzeichnisbaums Java Basics - Anfänger-Themen 5
G Rekursion mit Return - Baum durchlaufen Java Basics - Anfänger-Themen 4
F Objektnamen mit Schleife durchlaufen. Java Basics - Anfänger-Themen 10
G [Threads]: Mit mehreren Threads 1 ArrayList durchlaufen Java Basics - Anfänger-Themen 19
G HashMap durchlaufen und alle keys mit values ausgeben Java Basics - Anfänger-Themen 4
M Variablen einer Klasse zu durchlaufen möglich? Java Basics - Anfänger-Themen 5
K 2D Array spaltenweise durchlaufen Java Basics - Anfänger-Themen 4
G Baumstruktur rekursiv durchlaufen Java Basics - Anfänger-Themen 2
M Textfile durchlaufen und ersetzen Java Basics - Anfänger-Themen 2
M textboxen mit schleife durchlaufen. Java Basics - Anfänger-Themen 5
G Alle Componente eines JFrame durchlaufen Java Basics - Anfänger-Themen 3
P Schleife wird falsch durchlaufen!? Java Basics - Anfänger-Themen 3
H HashMap durchlaufen Java Basics - Anfänger-Themen 4
M Verzeichnisse rekursiv durchlaufen und dann RegEx Java Basics - Anfänger-Themen 6
J Durchlaufen von Vektoren Java Basics - Anfänger-Themen 14
G Array mit Schleife durchlaufen - guter Stil? Java Basics - Anfänger-Themen 20
K durchlaufen einer methode zählen Java Basics - Anfänger-Themen 15
M for-Schleife und Variablen automatisch durchlaufen Java Basics - Anfänger-Themen 2
W Baum durchlaufen Java Basics - Anfänger-Themen 3
M String mit For Each durchlaufen Java Basics - Anfänger-Themen 4
E liste rekursiv durchlaufen? Java Basics - Anfänger-Themen 3
S NameValuePair durchlaufen Java Basics - Anfänger-Themen 4
D Verzeichnisse rekursiv durchlaufen Java Basics - Anfänger-Themen 3
M HashMap durchlaufen: Was stimmt nicht? Java Basics - Anfänger-Themen 7
E Verständnisfragen zu HashMaps und Sets Java Basics - Anfänger-Themen 8
P Collections Feld aus Sets erstellen. Java Basics - Anfänger-Themen 7
U Sets zusammenführen Java Basics - Anfänger-Themen 2
feuervogel Datentypen Zwei Sets sind gleich, aber dann doch nicht Java Basics - Anfänger-Themen 9
P Zahlenwerte eines Sets vergleichen Java Basics - Anfänger-Themen 12
M Sets:Ein Set aus zwei verschiedenen bilden Java Basics - Anfänger-Themen 13
1 Problem bei auslesen eines Result Sets Java Basics - Anfänger-Themen 4
G Welche Datenstruktur ( Sets / Maps)? Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben