一、Lambda案例
案例1
public class TestLambda1 {
public static void main(String[] args) {
new Runnable() {
@Override
public void run() {
System.out.println("匿名内部类实现Runnable接口");
}
}.run();
int i = 1;
Runnable r = () -> {
System.out.println("用lambda实现Runnable接口");
System.out.println("i=" + i);
};
r.run();
}
}
案例2
public class TestLambda2 {
public static void main(String[] args) {
new Action() {
@Override
public void execute(String content) {
System.out.println(content);
}
}.execute("jdk1.8之前的匿名内部类实现方式,执行登录操作");
Action login = (String content) -> {
System.out.println(content);
};
login.execute("jdk1.8的lambda语法实现登录操作");
}
static interface Action {
void execute(String content);
}
}
二、Stream接口
Stream介绍
-
Stream在Java8中被定义为泛型接口
-
Stream接口代表数据流
-
Stream不是一个数据结构,不直接存储数据
-
Stream通过管道操作数据
-
创建Stream接口实现类对象
//stream():创建一个Stream接口实现类的对象。 List<Person> list = new ArrayList<>(); Stream<Person> stream = list.stream ();
管道介绍
- 管道:代表一个操作序列
- 管道包含以下组件:
- 数据集:可能是集合、数字等
- 零个或多个中间业务,如:过滤器
- 一个终端操作,如:forEach
过滤器介绍
-
过滤器:用给定的条件在源数据基础上过滤出新的数据,并返回一个Stream对象
-
过滤器包含匹配的谓词(谓词,用来描述或判定客体性质、特征或者客体之间关系的词项)
//判断p对象是否为男性的lambda表达式 List<Person> list = new ArrayList<>(); Stream<Person> stream = list.stream(); stream = stream.filter(p -> getGender() == '男');
案例
//创建一个元素为Person类的集合:list
List<Person> list = new ArrayList<>();
//使用Stream和forEach显示该集合所有的元素。
Stream<Person> stream = list.stream();
stream.forEach(p -> System.out.println(p.toString()));
//使用Stream过滤器filter过滤出性别为女性的人群
list.stream()
.filter(p -> p.getGender() == SexEnum.FEMALE)
.forEach(p -> System.out.println(p.toString()));
三、DoubleStream接口
介绍
- DoubleStream接口表示元素类型的double的数据源
- DoubleStream接口的常用方法:
- stream().max().getAsDouble():获取流中数据集的最大值
- stream().min().getAsDouble():获取流中数据集的最小值
- stream().average().getAsDouble():获取流中数据集的平均值
案例
//创建一个元素为Person类的集合:list
List<Person> list = new ArrayList<>();
//统计people集合中姓名中包含"菲"字的平均身高
double avgHeight = list.stream()
.filter(p -> p.getName().indexOf("菲") >= 0)
.mapToDouble(p -> p.getHeight())
.average()
.getAsDouble();
System.out.println("包含菲字的所有人的平均身高:" + avgHeight + "米");
四、LocalDate类
介绍
LocalDate类使用ISO日历表示年、月、日
常用方法
- LocalDate.now():获取系统当前日期
- LocalDate.of(int year, int month, int dayOfMonth):按指定日期创建LocalDate对象
- getYear():返回日期中的年份
- getMonthValue():返回日期中的月份
- getDayOfMonth():返回月份中的日
案例
public class TestLocalDate {
public static void main(String[] args) {
LocalDate date = LocalDate.now();
System.out.println(date.getYear());
System.out.println(date.getMonthValue());
System.out.println(date.getDayOfMonth());
System.out.println(date.toString());
}
}
五、LocalTime类
介绍
LocalTime类用于表示一天中的时间
常用方法
- LocalTime.now():获取系统当前时间
- LocalTime.of(int hour, int minute, int second):按指定时间创建LocalTime对象
- getHour():返回小时
- getMinute():返回分钟
- getSecond():返回秒
案例
public class TestLocalTime {
public static void main(String[] args) {
LocalTime time = LocalTime.now();
System.out.println(time.getHour());
System.out.println(time.getMinute());
System.out.println(time.getSecond());
System.out.println(time.toString());
}
}
六、LocalDateTime类
介绍
LocalDateTime类用于表示日期和时间
常用方法
- LocalDateTime.now():获取系统当前时间
- LocalDateTime.of(int year, int month, int dayOfMonth, int hour, int minute, int second):按指定日期和时间创建LocalDateTime对象
- getYear():返回日期中的年份
- getMonthValue():返回日期中的月份
- getDayOfMonth():返回月份中的日
- getHour():返回小时
- getMinute():返回分钟
- getSecond():返回秒
案例
public class TestLocalDateTime {
public static void main(String[] args) {
LocalDateTime dateTime = LocalDateTime.now();
System.out.println(dateTime.getYear());
System.out.println(dateTime.getMonthValue());
System.out.println(dateTime.getDayOfMonth());
System.out.println(dateTime.getHour());
System.out.println(dateTime.getMinute());
System.out.println(dateTime.getSecond());
System.out.println(dateTime.toString());
}
}
七、DateTimeFormatter类
介绍
DateTimeFormatter类用于将字符串解析为日期
常用方法
- static ofPattern(String pattern):按pattern字符串指定的格式创建DateTimeFormatter对象
- LocalDateTime.parse(strDate, formatter)
案例
//将字符串“2014-04-01 13:24:01”格式化为一个LocalDateTime类的对象,并显示年、月、日、时、分和秒
public class TestDateTimeFormatter {
public static void main(String[] args) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime date = LocalDateTime.parse("2014-04-01 13:24:01", formatter);
System.out.println(date.toString());
}
}
八、ZonedDateTime类
介绍
ZonedDateTime处理日期和时间与相应的时区
常用方法
- ZonedDateTime.now():获取系统当前日期和时间
- String format(DateTimeFormatter formatter):按指定模板将日期对象格式化为一个字符串
案例
//将当期日期格式化为字符串并显示年、月、日、时、分和秒
public class TestZonedDateTime {
public static void main(String[] args) {
ZonedDateTime date = ZonedDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy:HH:mm:ss");
String strDate = date.format(formatter);
System.out.println(strDate);
}
}
网友评论