/home/wpollock1/public_html/AJava/StreamDemo.java

import java.util.*;
import java.util.stream.*;

/** StreamDemo is a trivial example of using Java 8 aggregation operations.
 *  Here, we process a list of Persons, displaying some information on some
 *  and averaging all of their ages at the end.
 *  Written 7/2014
 *  @Author Wayne Pollock, Tampa Florida USA
 */
public class StreamDemo {
   public static void main ( String [] args ) {
      List<Person> myList = new ArrayList<>();
      myList.add( new Person( "Wayne", 56, 'M' ) );
      myList.add( new Person( "Jane", 17, 'F' ) );
      myList.add( new Person( "Hymie", 22, 'M' ) );
      double average = myList.stream()
       .map( e -> { if (e.getAge() >= 18 )
                      System.out.println( e.getName() );
                    return e;
                  } )
       .mapToInt( Person::getAge )
       .average().getAsDouble();
      System.out.printf( "Average age: %4.2f%n", average );
   }
}

/** Trivial class Person
 */
class Person {
   private String name;
   private int age;
   private char gender;

   public Person ( String name, int age, char gender ) {
      this.name = name;
      this.age = age;
      this.gender = gender;
   }

   public String getName () { return name; }
   public void setName ( int age ) { this.name = name; }

   public int getAge () { return age; }
   public void setAge ( int age ) { this.age = age; }

   public char getGender () { return gender; }
   public void setGender ( char gender ) { this.gender = gender; }
   public boolean isMale () { return gender == 'M'; }
   public boolean isFemale () { return gender == 'F'; }
}