Java8的Lambda表达式与类型检查、推断及限制
为了全面了解Lambda表达式,我们应该知道Lambda的实际类型是什么。
类型检查
Lambda的类型**是从使用Lambda的上下文推断出来的**。上下文(即`接受它传递的方法参数`或`变量`)所需要的类型称为`目标类型`。下面的例子说明了Lambda表达式工作时**类型检查**的过程:
|
|
使用Lambda的上下文所需的目标类型是什么?
…
Iterable和Iterator
Iterator和Iterable的内部实现
iterator
为Java中的迭代器对象,是能够对List这样的集合进行迭代遍历的底层依赖。而iterable
接口里定义了返回iterator的方法,相当于对iterator的封装,实现了iterable接口的类可以支持for each循环。
Java正则表达式匹配模式及实例
正则表达式 | 匹配 | 示例 |
---|---|---|
x | 单个字符 | Java匹配Java |
. | 任意单个字符 | Java匹配J..a |
(ab|cd) | ab或cd | ten匹配t(en|im) |
[abc] | a或b或c | Java匹配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到p | Java匹配 [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?Java 和J?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