AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verglaich Java - Delphi Iteratoren

Ein Thema von Luckie · begonnen am 30. Nov 2008 · letzter Beitrag vom 1. Dez 2008
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Verglaich Java - Delphi Iteratoren

  Alt 30. Nov 2008, 22:23
Zum Hintergrund siehe meinen vorherigen Beitrag zum Thema: http://www.delphipraxis.net/internal...=970945#970945

Jetzt geht es mir um Iteratoren. Mit hilfe von Iteratoren kann man ja zum Beispiel in Java durch eine ArrayList interieren. Allerdings ist mir der Unterschied bei der Verwendung einer for-Schleife nicht ganz klar.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Verglaich Java - Delphi Iteratoren

  Alt 30. Nov 2008, 22:29
Sie bewirkt zwar das gleiche ist aber nicht so schön
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Verglaich Java - Delphi Iteratoren

  Alt 30. Nov 2008, 22:37
Also das ist dann wohl eher geschmacksache:
Code:
   private void ausgabe(ArrayList kunden)
   {
      ListIterator iterKunden = kunden.listIterator();
      while (iterKunden.hasNext())
      {
         Kunde k = (Kunde)iterKunden.next();
         System.out.println(k.getName() + ", " + k.getVorname());
         ListIterator iterKonten = k.getKonten().listIterator();
         while (iterKonten.hasNext())
         {
            Konto ko = (Konto)iterKonten.next();
            System.out.println(ko.getBezeichnung() + ": " + ko.getSaldo());
         }
         System.out.println("");
      }
   }
Delphi-Quellcode:
procedure TForm1.UpdateKonten(Kunde: TBankKunde);
var
  Konto : TBankKonto;
  i : Integer;
begin
  Listbox2.Clear;
  if Assigned(Kunde) then
  begin
    for i := 0 to Kunde.GetKontenCount - 1 do
    begin
      Konto := Kunde.GetKonto(i);
      Listbox2.Items.Add(IntToStr(Konto.KontoNummer)+ ': ' + IntToStr(Konto.Saldo) + ' Euro');
    end;
  end;
end;
In Java muss ich erst noch einen ListIterator erzeugen und in der Schleife das zurückgegeben Objekt casten.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: Verglaich Java - Delphi Iteratoren

  Alt 30. Nov 2008, 22:37
Hallo,
Zitat von mkinzler:
Sie bewirkt zwar das gleiche ist aber nicht so schön
nicht nur das. Mit Iteratoren kann man (wenn man will) lustige Sachen anstellen. Sie geben zwar immer das nächste Element zurück, aber welches das ist, kann der Programmierer des Iterators frei entscheiden. Du kannst z. B. einen Iterator schreiben, der in einer Liste nur die Elemente mit geradem Index zurückliefert.

Ein weiterer Vorteil ist, dass viele Klassen in Java das Interface Iterable implementieren. Du kannst also alle diese Klassen iterieren, ohne wissen zu müssen, wie Du an ein einzelnes Element kommst oder wie Du die Anzahl der Elemente ermittelst.

Der Itarator in Java hat übrigens noch eine feine Methode: Remove. Damit kann man das aktuelle Element aus der Liste entfernen, ohne sich um die Zählvariable kümmern zu müssen. Sowas ist in Delphi nur zu machen, wenn die Schleife auf Null herunterzählt.

//Edit: Wo ich gerade Deinen Beitrag sehe. So iteriert man in Java natürlich nicht. Man macht das so:
Code:
private void ausgabe(ArrayList kunden)

  for (Kunde k : kunden)
  { 
    System.out.println(k.getName() + ", " + k.getVorname());
    for (Konto ko : k.getKonten())
       System.out.println(ko.getBezeichnung() + ": " + ko.getSaldo());

    System.out.println("");
  } 
}
Das ist schon einfacher zu lesen.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Verglaich Java - Delphi Iteratoren

  Alt 30. Nov 2008, 22:45
Ah, dann macht das Erstellen des ListIterators Objektes natürlcih wieder wett, wenn man dadurch Vorteile erlangt gegenüber einer schnöden for-Schleife.

@xaromz: Zu deinem Edit: Wo ist denn da jetzt der Iterator geblieben? Sieht natürlich schöner aus, das stimmt, aber ich lasse es mal zu Demonstartionszwecken bei der Verwendung eines Interators.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: Verglaich Java - Delphi Iteratoren

  Alt 30. Nov 2008, 22:48
Hallo,

Zitat von Luckie:
@xaromz: Zu deinem Edit: Wo ist denn da jetzt der Iterator geblieben?
der Iterator steckt im "for (a : b)" drin. Das funktioniert im Grunde genauso wie das for .. in unter Delphi: Der Compiler formt den Code so um, dass er Deinem Beispiel entspricht, d. h. Iterator holen und while-Schleife bauen.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Verglaich Java - Delphi Iteratoren

  Alt 30. Nov 2008, 22:57
Dein Code compiliert bei mir übrigens nicht. Kann es daran liegen, dass ich in Wirklichkeit J# mit dem VS benutze und kein reines Java?

Zum einem will er bei for ein Gleichzeichen anstatt dem Doppelpunkt und wenn ich das ändere, will er hinter der for-Zeile ein Semikolon.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#8

Re: Verglaich Java - Delphi Iteratoren

  Alt 30. Nov 2008, 23:12
Hi!

Also von der reinen Java-Syntax kenne ich das so wie in dem Beispiel oben und das kompiliert dann auch...


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von memphis
memphis

Registriert seit: 4. Apr 2003
Ort: Innsbruck
89 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Verglaich Java - Delphi Iteratoren

  Alt 1. Dez 2008, 10:51
Hallo,

J# beinhaltet Wrapper für alle Klassenbibliotheken des JDK 1.1.4 für .NET (erzeugt also keinen Java-Bytecode). Die oben erwähnte for-Schleife für Iteratoren wurde erst in Java 1.5 eingeführt. Ich würde generell von J# abraten (meines Wissens hat Microsoft die Entwicklung eingestellt) und für Lernzwecke "richtiges" Java verwenden.

Grüße, lukas.
Lukas
Wenn du nicht mehr weiter weißt, zeichne dir 'nen Einheitskreis.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Verglaich Java - Delphi Iteratoren

  Alt 1. Dez 2008, 12:11
Auf dem Schulrechner war aber leider nur das VS von Micosoft installiert. Da ich zu Hause die Express Versionen nutze hatte es sich angeboten.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz