java8的 概述以及新特性
Posted 健康平安的活着
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java8的 概述以及新特性相关的知识,希望对你有一定的参考价值。
一 java8的新特性
1.代码简洁
2.支持stream的API
3.支持lambda表达式
4.更利于并行计算。
二 java8功能的引出
2.1 需求描述
在一个集合中找出年龄大于50,且分数大于80分的学生。
List<Student> studentsList=new ArrayList<>(); studentsList.add(new Student("zhangsan",23,56)); studentsList.add(new Student("lisi",33,86)); studentsList.add(new Student("wangwu",56,90));
2.2 方式1:普通遍历获取
//普通方式1:获取学生年龄大于50的学生
List<Student> firstList=getAgeAbove50( studentsList);
for(Student s:firstList)
System.out.println("s:"+s);
System.out.println("===============");
List<Student> secondList=getScoeAboe80( studentsList);
for(Student s2:secondList)
System.out.println("s:"+s2);
System.out.println("===============================");
结果为:
s:Studentname='wangwu', age=56, score=90.0
===============
s:Studentname='lisi', age=33, score=86.0
s:Studentname='wangwu', age=56, score=90.0
===============================
2.2 方式2:通过接口的策略模式
1.定义一个接口
public interface MyStudent<T> public boolean checkout(T t);
2.过滤实现类
1.过滤年龄
public class MyStudentAgeFilter implements MyStudent<Student> @Override public boolean checkout(Student student) boolean flag=false; if(student.getAge()>50) flag=true; return flag;
2.过滤分数
public class MyStudentScoreFilter implements MyStudent<Student> @Override public boolean checkout(Student student) boolean flag=false; if(student.getScore()>80) flag=true; return flag;
3.测试
//方式2:接口方式,获取学生年龄大于50的学生
List<Student> thirdList = getFilterData( studentsList, new MyStudentAgeFilter());
for(Student student2:thirdList)
System.out.println("st2:"+student2);
System.out.println("方式2:接口方式=============");
List<Student> fourthList = getFilterData( studentsList, new MyStudentScoreFilter());
for(Student student3:fourthList )
System.out.println("st3:"+student3);
System.out.println("**************");
结果:
st2:Studentname='wangwu', age=56, score=90.0
方式2:接口方式=============
st3:Studentname='lisi', age=33, score=86.0
st3:Studentname='wangwu', age=56, score=90.0
2.3 方式3:匿名内部类
//方式3:匿名内部类,获取学生年龄大于50的学生 List<Student> fiveList = getFilterData(studentsList, new MyStudent<Student>() @Override public boolean checkout(Student student) if(student.getAge()>50) return true; return false; ); for(Student student4:fiveList ) System.out.println("st4:"+student4);
结果:
st4:Studentname='wangwu', age=56, score=90.0
2.4 方式4:lambda表达式
//方式4: lambada表达式 List<Student> list = getFilterData(studentsList, (e) -> e.getAge() >50); list.forEach(System.out::println); System.out.println("------------------------------------------");
结果为:
Studentname='wangwu', age=56, score=90.0
2.5 方式5:stream api表达式
//方式5: streamApi studentsList.stream().filter((e) -> e.getAge() > 50).forEach(System.out::println); System.out.println("----------------------------------------------");
结果为:
Studentname='wangwu', age=56, score=90.0
以上是关于java8的 概述以及新特性的主要内容,如果未能解决你的问题,请参考以下文章