Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;

public class Main {

    public static void main(String[] args) {
        List<Student> members = new ArrayList<>();

        members.add(new Student("P", Sex.MALE, 12, "p@g.com"));
        members.add(new Student("J", Sex.MALE, 42, "j@g.com"));
        members.add(new Student("K", Sex.FEMALE, 22, "k@g.com"));
        members.add(new Student("L", Sex.FEMALE, 52, "l@g.com"));

        for (Sex gender : Sex.values()) {
            System.out.println("All " + gender + ":");
            processMembersWithFunction(members, p -> p.getGender() == gender, Student::getName,
                    System.out::println);
        }

        System.out.println("All FEMALE over 30:");
        processMembersWithFunction(members, p -> p.getGender() == Sex.FEMALE && p.getAge() > 30, Student::getName,
                System.out::println);
    }

    public static void processMembersWithFunction(List<Student> roster, Predicate<Student> tester,
            Function<Student, String> mapper, Consumer<String> block) {
        for (Student p : roster) {
            if (tester.test(p)) {
                String data = mapper.apply(p);
                block.accept(data);
            }
        }
    }
}

enum Sex {
    MALE, FEMALE
}

class Student {

    private final String name;
    private final int age;
    private final Sex gender;
    private final String emailAddress;

    public Student(String name, Sex gender, int age, String emailAddress) {

        this.name = name;
        this.gender = gender;
        this.age = age;
        this.emailAddress = emailAddress;
    }

    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }

    public Sex getGender() {
        return gender;
    }

    public String getEmailAddress() {
        return emailAddress;
    }
}