jdk8 部分新特性

jdk1.8 时间的创建及工具类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// Clock
Clock clock = Clock.systemDefaultZone();
System.out.println(clock.millis());
Instant instant = clock.instant();
System.out.println(instant);
Date from = Date.from(instant);
System.out.println(from);
// 时区
// 获取所有时区
Set<String> availableZoneIds = ZoneId.getAvailableZoneIds();
System.out.println(availableZoneIds);
// 获取指定时区的ZoneId
ZoneId of = ZoneId.of("Asia/Aden");
System.out.println(of.getRules());

// localtime 获取指定时区的时间
LocalTime now = LocalTime.now(of);
System.out.println("当前时间是:"+now);

// localData 本地日期
LocalDate today = LocalDate.now();
System.out.println("今天的日期是:"+today);
LocalDate tomorrow = today.plus(1, ChronoUnit.DAYS);
System.out.println("明天的日期是:"+tomorrow);
LocalDate yesterday = today.plus(-1, ChronoUnit.DAYS);
System.out.println("昨天的日期是:"+yesterday);
// 创建指定日期
LocalDate of1 = LocalDate.of(2019, Month.JUNE, 11);
System.out.println(of1);
DayOfWeek dayOfWeek = of1.getDayOfWeek();
System.out.println("今天是周几:"+dayOfWeek);
// DateTimeFormatter格式化时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
String format = formatter.format(today);
System.out.println(format);

Stream

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
List<String> stringList = new ArrayList<>();
stringList.add("ddd2");
stringList.add("aaa2");
stringList.add("bbb1");
stringList.add("aaa1");
stringList.add("bbb3");
stringList.add("ccc");
stringList.add("bbb2");
stringList.add("ddd1");

// stream 串行
// 过滤
stringList
.stream()
.filter(s -> s.startsWith("a"))
.forEach(System.out::println);
System.out.println("-----------------------");

// 排序
// 排序只是创建了一个排序好的stream,原数据并没有改变
stringList
.stream()
.sorted()
.filter(s -> s.startsWith("a"))
.forEach(System.out::println);
System.out.println("-----------------------");

// map映射,map操作
stringList
.stream()
.map(String::toUpperCase)
.sorted((o1, o2) -> o2.compareTo(o1))
.forEach(System.out::println);
System.out.println("-----------------------");

// 匹配,任一一个匹配就可以返回
boolean anyMatch = stringList
.stream()
.anyMatch(s -> s.startsWith("a"));
System.out.println(anyMatch);
System.out.println("-----------------------");

// 匹配,所有匹配,所有匹配到才会返回true
boolean allMatch = stringList
.stream()
.allMatch(s -> s.startsWith("a"));
System.out.println(allMatch);
System.out.println("-----------------------");

// 匹配,没有匹配到的返回true,如果有匹配到的则返回false
boolean noneMatch = stringList
.stream()
.noneMatch(s -> s.startsWith("a"));
System.out.println(noneMatch);
System.out.println("-----------------------");

// 计数
long count = stringList
.stream()
.filter(s -> s.startsWith("a"))
.count();
System.out.println(count);
System.out.println("-----------------------");

// 规约,将集合整合为一个元素
Optional<String> reduce = stringList
.stream()
.sorted()
.reduce((s, s2) -> s + "#" + s2);
reduce.ifPresent(System.out::println);

lambda语法创建接口

1
2
3
4
5
6
7
8
9
10
11
public interface InteTest {
void initData(String string);
}
public class Test {
public static void main(String[] args) {
InteTest inteTest = string -> {
System.out.println(string);
};
inteTest.initData("123");
}
}