Java8的Lambda表达式与类型检查、推断及限制


为了全面了解Lambda表达式,我们应该知道Lambda的实际类型是什么。

类型检查

Lambda的类型**是从使用Lambda的上下文推断出来的**。上下文(即`接受它传递的方法参数`或`变量`)所需要的类型称为`目标类型`。下面的例子说明了Lambda表达式工作时**类型检查**的过程:
1
2
List<Apple> heavierThan150g =
    	filter(inventory, (Apple a) -> a.getWeight() > 150);
  1. 使用Lambda的上下文所需的目标类型是什么?

阅读更多 ➜

Iterable和Iterator


Iterator和Iterable的内部实现

iterator为Java中的迭代器对象,是能够对List这样的集合进行迭代遍历的底层依赖。而iterable接口里定义了返回iterator的方法,相当于对iterator的封装,实现了iterable接口的类可以支持for each循环。

阅读更多 ➜

Java正则表达式匹配模式及实例


正则表达式匹配示例
x单个字符Java匹配Java
.任意单个字符Java匹配J..a
(ab|cd)ab或cdten匹配t(en|im)
[abc]a或b或cJava匹配J[abc]va
[^abc]abc外的字符Java匹配J[^efg]va
[a-z]a-z的任意字符Java匹配[A-Z]av[a-z]
[^a-z]除a-z的任意字符Java匹配Jav[^b-z]
[a-e[m-p]]a到e或m到pJava匹配 [A-G[I-M]]av[a-d]
[a-e&&[c-p]]a到e与c到p的交集Java匹配 [A-P&&[I-M]]av[a-d]
\d一个数字123 匹配\\d
\D一个非数字$Java匹配[\\D][\\D]ava
w单词字符Java1匹配 [\\w]ava[\\w]
W非单词字符$Java匹配[\\W][\\w]ava
s空白字符Java 2匹配Java\\s2
p*p模式出现0次或任意多次(贪婪匹配)aaaaab匹配a*b
p+p模式出现1次或任意多次a匹配a+b*, able匹配(ab)+.*
p?p出现0或1次(非贪婪匹配,尽量少地匹配)Java匹配J?JavaJ?ava
p{n}p正好出现n次aaaa匹配a{4}
p{n,}p至少出现n次aaaa匹配a{1,},a不匹配a{2,}
p{n,m}p出现次数在n到m次之间aaaa匹配a{1,9},abb不匹配a{2,9}bb
  • matches(regex:String) : boolean : 如果字符串匹配模式,返回true

阅读更多 ➜