1、lambda表达式

1)对象 =(变量…) ->{
方法实现
}
2)实例:

public class LambdaDemo{
public static void main(String[] args){
System.out.println("kk");


Runnable r =()->{
int i = 0;
System.out.println("i="+(i++));
};

Action action = (String content)->{
System.out.println(content);
};
action.execute("haha");
}

static interface Action{
void execute(String content);
}
}

2、Stream泛型接口,有过滤功能

1)创建一个元素Person集合:people使用Stream 和 forEach显示该集合所以元素

public class Person {
public static enum Sex {
FEMALE, MALE;
}

public String name;
public int age;
public Sex sex;

public Person(String name, int age, Sex sex) {
this.name = name;
this.age = age;
this.sex = sex;
}

@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", sex=" + sex +
'}';
}
}

打印所有信息

public class StreamDemo {
public static void main(String[] args){
List<Person> persons = initPersons();
Stream<Person> stream = persons.stream();
stream.filter(p -> p.sex == Person.Sex.FEMALE);
stream.forEach(
p -> System.out.println(p.toString())
);
}

public static List<Person> initPersons(){
List<Person> persons = new ArrayList<Person>();
Person person = new Person("tom", 22 , Person.Sex.FEMALE);
persons.add(person);
person = new Person("jack", 23 , Person.Sex.FEMALE);
persons.add(person);
person = new Person("lily", 24 , Person.Sex.FEMALE);
persons.add(person);
person = new Person("stone", 25 , Person.Sex.FEMALE);
persons.add(person);
return persons;
}

}

3、Stream求平均值

public class StreamDemo {

public static void main(String[] args) {
List<Person> persons = initPersons();
Stream<Person> stream = persons.stream();
double avgAge = stream.filter(p -> p.age > 18)
.filter(p -> p.name.indexOf("tom")>=0)
.mapToDouble(p -> p.age)
.average()
.getAsDouble();
System.out.println(avgAge);
}

public static List<Person> initPersons() {
List<Person> persons = new ArrayList<Person>();
Person person = new Person("tom", 22, Person.Sex.FEMALE);
persons.add(person);
person = new Person("jack", 23, Person.Sex.FEMALE);
persons.add(person);
person = new Person("lily", 24, Person.Sex.FEMALE);
persons.add(person);
person = new Person("stone", 25, Person.Sex.FEMALE);
persons.add(person);
return persons;
}
}

4、LocateDate 与 LocateTime的用法

1)LocateDate.now():系统日期
2)LocateDate.of(int year, int month, int dayOfMonth):按指定日期创建LocateDate
3)getYear():返回日期中的年份
4)getMonth():返回日期中的月份
5)getDayOfMonth():返回月份中的日

public class LocateDateDemo {
public static void main(String[] args) {
LocalDate date = LocalDate.now();
System.out.println(date.toString());
System.out.println(date.getYear() + "年");
System.out.println(date.getMonth()+ "月");
System.out.println(date.getDayOfMonth() + "日");

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 dateTime = LocalDateTime.now();
System.out.println(dateTime.toString());
System.out.println(dateTime.getYear() + "年");
System.out.println(dateTime.getMonth()+ "月");
System.out.println(dateTime.getDayOfMonth() + "日");
System.out.println(dateTime.getHour());
System.out.println(dateTime.getMinute());
System.out.println(dateTime.getSecond());
}
}

5、DateTimeFormatter

public class DateFormatterDemo {

public static void main(String[] args) {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd:HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse("2018-11-31:11:12:13",dtf);
System.out.println(dateTime.toString());
}
}

6、ZonedDateTime系统时间

LocalDateTime dateTime = LocalDateTime.parse("2018-11-31:11:12:13",dtf);
ZonedDateTime dt = ZonedDateTime.now();
String formatDate = dt.format(dtf);
System.out.println(formatDate);