Erweiteres for (foreach) in Java 5

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    Erweiteres for (foreach) in Java 5 - Presentation Transcript

    1. Erweitertes for
    2. Erweitertes for für Arrays
      • Der Durchlauf der Elemente eines Feldes mit Index sieht üblicherweise so aus;
      • for ( int i = 0; i < array.length; i++ ) {
      • int e = array[ i ];
      • System.out.println( e );
      • }
      • Die neue erweiterte for-Schleife (auch foreach genannt) ermöglicht ein Durchlaufen ohne sichtbaren Index:
      • for ( int e : array ) {
      • System.out.println( e );
      • }
    3. Erweitertes for für Collections
      • Die for-Schleife zum Iterieren über Elemente einer java.util.Collection sieht im allgemeinen so aus:
      • for ( Iterator i = list.iterator(); i.hasNext(); )
      • {
      • Object o = i.next();
      • ...
      • }
      • Kürzer geht das mit dem erweiterten for:
      • for ( Object o : list ) {
      • ...
      • }
    4. Grenzen vom erweiterten for
      • Auf die Elemente – sei es Feldelemente oder Elemente der Collection – kann nur lesend, aber nicht schreibend zugegriffen werden.
      • Bei einer Iteration beginnt es immer am Anfang und endet hinten.
        • Man kann keinen Offset definieren.
        • Man kann nicht rückwärts von hinten nach vorne laufen.
        • Elemente lassen sich nicht überspringen.
        • Mit einem Index lassen sich nicht gleichzeitig zwei Datenstrukturen durchlaufen.
        • Ein normales break ist möglich und beendet die Schleife!
    5. Die Schnittstelle Iterable
      • Rechts vom Doppelpunkt des erweiteren for steht ein Objekt vom Typ java.lang.Iterable :
      • package java.lang.Iterable;
      • public interface Iterable<T> {
      • public java.util.Iterator<T> iterator();
      • }
      • Die Schnittstelle java.util.Collection erweitert Iterable . So können alle Datenstrukturen (außer Map ) rechts vom Doppelpunkt beim erweiterten for stehen.
      • List list = new ArrayList();
      • for ( Object o : list )
      • ...
      • Map und String implementieren Iterable nicht!
    6. Generische Deklaration und for
      • Eine nicht mit Java 5 Generics deklarierte Liste kann nur mit dem Typ Object durchlaufen werden.
      • List list = new ArrayList();
      • for ( Object o : list )
      • ...
      • Ist die Liste typisiert, kann der Typ spezialisiert sein:
      • List <String> list = new ArrayList <String> ();
      • for ( String o : list )
      • ...
    7. Performance-Probleme?
      • Das erweiterte for soll eine List<String> l ablaufen:
      • for ( String s : list )
      • System.out.println( s );
      • Hieraus geniert der (Sun)-Compiler Programmcode, der über einen Iterator die Datenstruktur abläuft.
      • String s;
      • for (Iterator i$ = list.iterator(); i$.hasNext();)
      • System.out.println( (String) i$.next() );
      • Im Fall einer LinkedList ist das Ablaufen mit einem Iterator am effizientesten, aber bei einer ArrayList ist get(index) etwas schneller.
        • Wenn es auf absolute Performanz ankommt, sollte der Zugriff besser klassisch über get() erfolgen.
    8. Durchlauf
      • Das erweiterte for läuft die Collection über einen Standard-Iterator ab.
      • Da ein Iterator parallele Änderungen überwacht, darf keiner im Hintergrund die Datenstruktur ändern.
        • Das nennt sich fail-fast. Das Verhalten ist zum Beispiel bei der Klasse ArrayList dokumentiert.
        • Sonst gibt es eine Exception.

    + tutego tutego , 2 years ago

    custom

    2278 views, 1 favs, 4 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 2278
      • 2154 on SlideShare
      • 124 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 4
    Most viewed embeds
    • 110 views on http://www.tutego.de
    • 12 views on http://www.tutego.com
    • 1 views on http://tutego.de
    • 1 views on http://static.slidesharecdn.com

    more

    All embeds
    • 110 views on http://www.tutego.de
    • 12 views on http://www.tutego.com
    • 1 views on http://tutego.de
    • 1 views on http://static.slidesharecdn.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Tags