erstes Arbeiten mit Collections

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,
ich habe noch nicht so den Durchblick mit Collections & brächte bitte eine Art 'Schlachtplan' zu folgender Aufgabe:

"Erstellen Sie eine Klasse ChecksumSortComparator, welche das Interface Comparator implementiert,
wobei die compare-Methode Integer-Werte nach der Quersumme vergleichen soll. Schreiben
Sie eine Anwendung ChecksumSortApplication, die in einer TreeSet die Werte 25455,
468718, 5621118, 155524 und 7526 nach der Quersumme sortiert speichert und diese mit Hilfe eines
Iterators wieder ausgibt."

So,
ich schreibe die Klasse ChecksumSortComparator.
->Was kommt in diese Klasse?
->Was schreibe ich in das Interface Comparator?
->Wohin kommt bei mir die Berechnung der Quersumme?

Wäre top,wenn mir jemand helfen würde.
 
S

SlaterB

Gast
> Was kommt in diese Klasse?
die compare-Operation
> Was schreibe ich in das Interface Comparator?

gar nix, das Interface ist in Java vorgegeben,
du schreibst eine Klasse, die das Interface implementiert: ChecksumSortComparator

> Wohin kommt bei mir die Berechnung der Quersumme?

in die compare-Operation

---------

ohne Wissen und Beispiele für Comparator macht das ganze natürlich wenig Sinn

http://www.galileocomputing.de/open...11_004.htm#mj44ce45c0a85db33fa30b3315d63024d5

insbesondere
Listing 11.7 com/javatutor/insel/util/ClubComparatorDemo.java
 

Jango

Gesperrter Benutzer
Hier werden keine Hausaufgaben gemacht.

Edit: War doch der SlaterB wieder schneller
 

Leroy42

Top Contributor
Ich ignoriere mal deine Fragen, da diese in die Irre führen.

Du sollst eine Klasse ChecksumSortComparator definieren, die
das Interface Comparator, also die Methode compareTo implementiert.

Code:
class ChecksumSortComparator implements Comparator<Integer> {
  public int compare(Integer a, Integer b) {
     // hier zahl <0, =0, >0 je nach Vergleich zurückliefern
  }
}

Die Anwendung ChecksumSortApplication benutzt dann
diese Klasse mit new ChecksumSortComparator().
 
G

Guest

Gast
ok,
ich habe mir vieles durchgelesen & dennoch schaffe ich es nicht auch nicht mit der 'Java ist eine Insel'-Aufgabe.

ich habe die Berechnung der Quersumme erstellt:

Code:
 while (i > 9){
					   
	 i = i%10 + i/10;
					   
	}

soll ich das jetzt in die 'public class ChecksumSortComparator implements Comparator' und die
'public int compare(Quersumme a, Quersumme b)' Methode einbinden?
Ich habe so meine Problem, weil ich doch mehrere Zahlen vergleiche und nicht nur 2 (mich irritiert das Quersumme a, Quersumme b in der Klammer).
Bitte um weitere Hilfe.
 

Marco13

Top Contributor
Das waren nicht die Quersummen, sondern die Eingabezahlen
Code:
compare(a, b)
{
     qa = quersumme(a);
     qb = quersumme(b);
     return qa-qb; // oder so
}
 
G

Gast

Gast
und wenn ich mehrere Zahlen zum Vergleich habe?
kann man dann 'compare(a, b, c,...,z)' machen?
 

Marco13

Top Contributor
Die einzig sinnvolle ternäre Relation, die ich mir für z.B. die natürlichen Zahlen denken könnte, wäre "Liegt zwischen". Alles was darüber hinausgeht...
Egal: Man kann immer nur ZWEI Zahlen vergleichen. Wenn man drei Zaheln vergleichen will, vergleicht man die erste mit der zweiten, und dann entweder die erste mit der dritten, oder die zweite mit der dritten, oder beides.
 

Leroy42

Top Contributor
Richtig (@Marco 13)

Überleg' doch mal. Was soll denn
Code:
compare(3, 2, 1)
genau liefern? :shock: ???:L :autsch:
 
G

Gast

Gast
Aha,
ok den Sinn verstehe ich jetzt.
Also werde ich für meine 5 Zahlen fünf compare Methoden schreiben?
 

Marco13

Top Contributor
Hm. Du wirst nur EINE Methode schreiben, aber die evtl. fünf mal (bzw. noch viel öfter) aufrufen....
 

Tobias

Top Contributor
Naja, nicht direkt. Er wird seinen Comparator (der eine compare-Methode enthält) einem TreeSet zuweisen, welches dann fünf Mal (oder möglicherweise auch öfter) diese Methode aufrufen wird.

mpG
Tobias

/klugscheiss
 
G

Guest

Gast
Ich hasse diese Collections...
Also, wir haben leider nur eine Aufgabe in der Vorlesung durchgenommen...diese habe ich versucht in meine Aufgabe umzuschreiben. Ist dort der richtige Ansatz?

Code:
public class ChecksumSortApplication {

	/**
	 * @param args
	 */
	  public static void main( String[] args ) 
	  { 
		  
		  TreeSet treeset = new TreeSet(new ChecksumSortComparator());
		  
		  treeSet.add(new Integer(25455));
		  treeSet.add(new Integer(468718));
		  treeSet.add(new Integer(5621118));
		  treeSet.add(new Integer(155524));
		  treeSet.add(new Integer(7526));
		  
		  Iterator iterator = treeSet.iterator();
		  
		  while(iterator.hasNext()){
			  System.out.println(iterator.next());
		  }
	  } 


}

-> ist es ok hier die Zahlen direkt einzusetzen?

Code:
public class ChecksumSortComparator implements Comparator {

	/**
	 * @param args
	 */
		
	  public int compare(Object o1, Object o2) { 
		  
		  int i1 = (Integer)o1;
		  int i2 = (Integer)o2;
		  
				   while (i > 9){
					   
					   i = i%10 + i/10;
					   
				   }
			                	  }

}

-> ich bekomme es nicht hin die Zahlen zur Quersummenberechnung zu bekommen...
mit der while-Schleife will ich die Quersumme berechnen, aber wie?!
 

Tobias

Top Contributor
Quersummenberechnung aus der Wikipedia:

Code:
public int quersumme(int s) {
    if(s < 10) return s;
    return quer(s/10) + s % 10;
}

Das würde ich mir als Hilfsfunktion in den Comparator schreiben. In die compare selbst kommt dann sowas wie:

Code:
public int compare(Object o1, Object o2) throws IllegalArgumentException {
    if(!(o1 instanceof Integer || o2 instanceof Integer)) {
         throw new IllegalArgumentException("Unzulässige Argumente!");
    }

    int quer1 = quersumme((Integer) o1);
    int quer2 = quersumme((Integer) o2);

    return quer1.compareTo(quer2);
}

mpG
Tobias
 
G

Gast

Gast
Ok, danke.
Aber wie bekomme ich denn hin, dass für alle Zahlen die Quersumme berechnet wird?
Sonst habe ich das bislang alles einzeln berechnet, aber das wäre doch zu umständlich?! Oder?
 

Tobias

Top Contributor
Probier's aus. Du wirst feststellen, das sich um die Quersummenberechnung das Treeset kümmert - It's magic!

mpG
Tobias

P.S.: Sich das im Debugger anzuschauen ist übrigens recht lehrreich.
 

Marco13

Top Contributor
Der Comparator wird immer verwendet, wenn eine Quersumme berechnet werden muß. Und das wird - ohne, dass man es merkt - automatisch für alle Zahlen gemacht. Unter Umständen wird die Quersumme auch mehrfach für die gleiche Zahl berechnet. Das könnte man vermeiden, ist aber nicht unbedingt sinnvoll (und wohl hier auch nicht die Aufgabe).
 

Leroy42

Top Contributor
Marco13 hat gesagt.:
Unter Umständen wird die Quersumme auch mehrfach für die gleiche Zahl berechnet.

Aber wirklich nur unter Umständen. :lol:

Und das auch nur, wenn mehr als 2 Zahlen in das
Treeset eingefügt werden; und wer macht schon sowas abartiges :cool:

Marco13 hat gesagt.:
Das könnte man vermeiden, ist aber nicht unbedingt sinnvoll (und wohl hier auch nicht die Aufgabe).

Sinnvoll wird's erst dann, wenn soetwas in einer
Produktivumgebung zum Einsatz kommt. Aber als
Hausaufgabe würde ich auch darauf verzichten.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Alen123 Erstes Arbeiten mit Methoden. Java Basics - Anfänger-Themen 5
G erstes Arbeiten mit Packages Java Basics - Anfänger-Themen 2
Igig1 Autoparkplatz verkettete Liste erstes und letztes Auto Java Basics - Anfänger-Themen 13
S Mein erstes eigenes Projekt - Aufbau und Strukturierung Java Basics - Anfänger-Themen 6
I Letztes, erstes Element vom Array Java Basics - Anfänger-Themen 9
X Array erstes und letztes Element tauschen Java Basics - Anfänger-Themen 2
J erstes Vorkommen eines Chars aus einem String entfernen Java Basics - Anfänger-Themen 3
J erstes Vorkommen eines chars entfernen Java Basics - Anfänger-Themen 1
O Erstes Programm: Matrizen Multiplikation Java Basics - Anfänger-Themen 10
H java erstes projekt Java Basics - Anfänger-Themen 502
M OOP Mein erstes Textadventure... Java Basics - Anfänger-Themen 3
K Erstes kleines Spieleprojekt - Java GUI in HTML einbinden Java Basics - Anfänger-Themen 3
D Auswahl und Ausgabe erstes Programm Java Basics - Anfänger-Themen 8
M Mein erstes Programm Java Basics - Anfänger-Themen 3
V Erste Schritte Erstes Project - Hilfe Java Basics - Anfänger-Themen 9
T erstes kleines Programm Java Basics - Anfänger-Themen 17
M Erste Schritte Erstes Programm mit Compiler öffnen Java Basics - Anfänger-Themen 4
M Mein erstes Java Programm Java Basics - Anfänger-Themen 5
J Erstes Applet läßt sich nicht anzeigen Java Basics - Anfänger-Themen 2
E Erstes "kleines" Programm Java Basics - Anfänger-Themen 5
M Erstes Textrollenspiel funktioniert...nicht. Java Basics - Anfänger-Themen 2
L Erstes Projekt aus zwei Projekten Java Basics - Anfänger-Themen 1
T mein erstes Java projekt Java Basics - Anfänger-Themen 8
1 Mein erstes Programm, HELP!! Java Basics - Anfänger-Themen 2
T OOP Mein erstes Java-Spiel - Schiffe versenken! Java Basics - Anfänger-Themen 2
M Erstes Prog. OS Abfrage Java Basics - Anfänger-Themen 9
E Mein erstes Java Projekt - Sauberer code? Java Basics - Anfänger-Themen 28
A Erstes Programm: Polynom-Klasse Java Basics - Anfänger-Themen 15
B Erstes Element eines Vectors erhalten Java Basics - Anfänger-Themen 5
D Mein erstes Programm flackert Java Basics - Anfänger-Themen 5
W Erste Schritte erstes Programm Java Basics - Anfänger-Themen 40
A Textdatei einlesen - erstes Zeichen falsch Java Basics - Anfänger-Themen 20
I Liste Remove erstes Element Java Basics - Anfänger-Themen 5
W Erstes eigens Programm - Klassen- und Schüler Verwaltungsprogramm Java Basics - Anfänger-Themen 5
M Erstes "sinnvolles" Programm Java Basics - Anfänger-Themen 11
A Erstes Programm - Problem beim Ausführen als jar Java Basics - Anfänger-Themen 3
B Methoden Mein erstes Programm - und gleich Probleme Java Basics - Anfänger-Themen 6
J Bald erstes Java Buch durchgearbeitet - Wie gehts nun weiter? Java Basics - Anfänger-Themen 6
R [CODECHECK] Erstes Programm Java Basics - Anfänger-Themen 6
T Erstes Zeichen aus String löschen Java Basics - Anfänger-Themen 8
J erstes Prog./Klasse - Konstruktur/Objekterstellung funktioniert nicht Java Basics - Anfänger-Themen 25
M Erstes Programm und Fehlermeldung Java Basics - Anfänger-Themen 5
B erstes Java-Applet Java Basics - Anfänger-Themen 7
M Erstes Zeichen in einem String in Großbuchstaben wandeln Java Basics - Anfänger-Themen 3
M Sammlung von Anfängerfragen für mein erstes Programm Java Basics - Anfänger-Themen 15
C Erstes Arraylist Element in for Schleife überspringen Java Basics - Anfänger-Themen 6
G Erstes Java-Programm Java Basics - Anfänger-Themen 10
E Erstes Programm - Problem mit Exception Java Basics - Anfänger-Themen 3
G Feststellen, ob erstes Zeichen eines Strings eine Ziffer ist Java Basics - Anfänger-Themen 11
M Serialisierung erstes Beispiel Java Basics - Anfänger-Themen 4
A erstes größeres Projekt Java Basics - Anfänger-Themen 14
P Mein erstes JAR-File Java Basics - Anfänger-Themen 8
G erstes Zeichen eines Strings herausfinden Java Basics - Anfänger-Themen 3
G erstes element einer haspmap Java Basics - Anfänger-Themen 5
T Erstes RPG: KeyAdapter Problem Java Basics - Anfänger-Themen 3
M erstes Zeichen ersetzen Java Basics - Anfänger-Themen 2
C Konstruktor wird nicht als erstes aufgerufen! Java Basics - Anfänger-Themen 11
L Suche Verbesserungsvorschläge für mein erstes Programm Java Basics - Anfänger-Themen 34
Bierhumpen mein erstes großes Programm. Was ändern? verbessern? Java Basics - Anfänger-Themen 12
O mit Regex erstes Zeichen überprüfen Java Basics - Anfänger-Themen 3
A Mein erstes Programm Java Basics - Anfänger-Themen 6
D JNDI-DataSource erstes mal benutzen Java Basics - Anfänger-Themen 4
T Erstes Programm Java Basics - Anfänger-Themen 7
B Erstes Programm :-/ Java Basics - Anfänger-Themen 3
C Erstes kleines Problem - string in chat ? Java Basics - Anfänger-Themen 9
M Erstes Element einer Enumeration? Java Basics - Anfänger-Themen 6
A Erstes Buch durchgelesen, wie weiter vorgehen? Java Basics - Anfänger-Themen 8
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
monsterherz Arbeiten mit Random Java Basics - Anfänger-Themen 12
T Mit jedem Wert in der for-Schleife weiter arbeiten Java Basics - Anfänger-Themen 3
B Zeitgleiches Arbeiten am Code mit mehreren Personen? Java Basics - Anfänger-Themen 7
D Erste Schritte Sinvolle Architektur und paketübergreifendes Arbeiten Java Basics - Anfänger-Themen 2
L Brauche Hilfe beim arbeiten mit Konstruktoren Java Basics - Anfänger-Themen 20
F Arbeiten mit Arrays Java Basics - Anfänger-Themen 2
B Kann man eine Tabelle in Eclipse erzeugen und damit arbeiten? Java Basics - Anfänger-Themen 8
P Erste Schritte Arbeiten mit Klassen Java Basics - Anfänger-Themen 8
K Interface: wie damit arbeiten Java Basics - Anfänger-Themen 4
G Graphische Darstellung (Arbeiten mit einem Window) Java Basics - Anfänger-Themen 1
N Mit der gleichen BlockingQueue in zwei Klassen arbeiten Java Basics - Anfänger-Themen 12
M Neuen Ordner im Überverzeichnis erstellen, und dadrin arbeiten Java Basics - Anfänger-Themen 4
M Input/Output Arbeiten mit extrem vielen Dateien Java Basics - Anfänger-Themen 8
A Mit Enums in Methoden arbeiten Java Basics - Anfänger-Themen 8
D Wie mit Bibliotheken ohne API arbeiten? Java Basics - Anfänger-Themen 16
S Arbeiten mit einer CSV Datei und Überprüfen von einem Datum in einem Textfeldern Java Basics - Anfänger-Themen 4
M Erste Schritte Arbeiten mit SuM (Stifte und Mäuse) Java Basics - Anfänger-Themen 20
S Arbeiten mit arrays Java Basics - Anfänger-Themen 4
D Arbeiten mit Twitter4J Java Basics - Anfänger-Themen 2
R mit klassen-instanzen arbeiten in packages Java Basics - Anfänger-Themen 10
H Arbeiten mit Properties Java Basics - Anfänger-Themen 8
hdi Worst-Performance-Award für Arbeiten mit ListModel Java Basics - Anfänger-Themen 7
G Mit Javadoc arbeiten Java Basics - Anfänger-Themen 13
L Arbeiten mit Vectoren in einer Hashtable Java Basics - Anfänger-Themen 2
Y Mit Interface arbeiten Java Basics - Anfänger-Themen 9
G mit Threads arbeiten Java Basics - Anfänger-Themen 2
N Herangehensweise - mit vielen Variablen arbeiten Java Basics - Anfänger-Themen 6
M Arbeiten mit ArrayList Java Basics - Anfänger-Themen 9
G mit Strings arbeiten Java Basics - Anfänger-Themen 7
G in Java mit Schnittstellen arbeiten Java Basics - Anfänger-Themen 5
G Arbeiten mit einem Fenster Java Basics - Anfänger-Themen 11
C Arbeiten mit MDI Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben