This program shows the usage of Lambdas in Java 8. Make sure that you're using JDK 1.8.0_11 or higher. If you're using Netbeans, configure it to use JDK 8 if not already done.
Lambdas are useful if you are going to learn the JavaFX APIs (they use them a lot). These also make writing much cleaner code possible.
Here's an example. Comments are included wherever necessary.
Output:
SchoolStud
SchoolStud
SchoolStud
true
false
1772
This lambda prints this line
Use braces if explicitly writing return. Don't forget semicolons inside braces
3544
3
Documentation http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
Lambdas are useful if you are going to learn the JavaFX APIs (they use them a lot). These also make writing much cleaner code possible.
Here's an example. Comments are included wherever necessary.
import java.util.*; import java.util.function.*; class Student{ enum Sex { MALE, FEMALE } Student(String name, int id, Sex gender){ this.name = name; this.id = id; this.gender = gender; } String name; int id; Sex gender; public void printStudent(){ System.out.println(name+" "+id+" "+gender); } } public class LambdaTest { static List<Student> students = new ArrayList<>(); public static <A , B> void filter(Iterable<A> source, Predicate<A> lamPred, Function<A, B> mapper, Consumer<B> output){ for(A item:source){ if(lamPred.test(item)){ B data = mapper.apply(item); output.accept(data); } } } public static void main(String[] args) { students.add(new Student("SchoolStud", 12, Student.Sex.MALE)); filter(students, student->student.id!=0, p->{return p.name;}, stringg->System.out.println(stringg)); filter(students, student->student.id==12, p->p.name, stringg->System.out.println(stringg)); filter(students, s->s.id==12, s->s.name, s->System.out.println(s)); AnotherTest.main(); } } interface MyLambdaType<A, B, C, D>{ D perform(A a, B b, C c); // A anotherFunction(A a, B b); //Uncomment this and you get an error. // This interface must only have one abstract method for using it as a Lambda } class AnotherTest{ public static void main(){ Predicate<Integer> pred = p->p==11; //Tests if a value is 11 Function<Integer, String> withReturn = p->p.toString();//Returns the //string representation of Integer Consumer<String> printer = p->System.out.println(p); //In case of return values Function<Integer, String> withReturn1 = p->{return "Use braces if " + "explicitly writing return. Don't forget semicolons " + "inside braces";}; BiFunction<Integer, Integer, String> adder = (a, b)->((Integer)(a+b)).toString(); //If you wanna make your own lamba function using a custom interface, //that interface must have only one abstract method MyLambdaType<Integer, Integer, Integer, String> mlt = (a, b, c)->((Integer)(a+b+c)).toString(); //Now use the lambdas just defined: System.out.println(pred.test(11)); System.out.println(pred.test(121)); System.out.println(withReturn.apply(1772)); //Get me a string //representation of this Integer printer.accept("This lambda prints this line");//Print a line for me System.out.println(withReturn1.apply(1773)); System.out.println(adder.apply(1772, 1772)); //Now test your own lambda type System.out.println(mlt.perform(1, 1, 1));//Perform the addition //of these three numbers /* Lambdas are just passable functions */ } }
Output:
SchoolStud
SchoolStud
SchoolStud
true
false
1772
This lambda prints this line
Use braces if explicitly writing return. Don't forget semicolons inside braces
3544
3
Documentation http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
No comments:
Post a Comment