什么是lambda表达式?
lambda是对匿名内部类的简化,如下图所示:
//原来的匿名内部类
@Test
public void test1(){
Comparator<String> com = new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
return Integer.compare(o1.length(), o2.length());
}
};
TreeSet<String> ts = new TreeSet<>(com);
TreeSet<String> ts2 = new TreeSet<>(new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
return Integer.compare(o1.length(), o2.length());
}
});
}
//现在的 Lambda 表达式
@Test
public void test2(){
Comparator<String> com = (x, y) -> Integer.compare(x.length(), y.length());
TreeSet<String> ts = new TreeSet<>(com);
}
Lambda 表达式的基础语法:
Java8中引入了一个新的操作符 "->" 该操作符称为箭头操作符或 Lambda 操作符 ,箭头操作符将 Lambda 表达式拆分成两部分: 左侧:Lambda 表达式的参数列表 右侧:Lambda 表达式中所需执行的功能, 即 Lambda 体
例如: (String a, String b) -> { System.out.println(a+b) ;}
输入String类型的 a b 并且在控制台输出 a和b的值。
比较常用for循环应用List<String> lamLists = new ArrayList<String>();
// 以前的 for 循环方式
for (String lamList : lamLists) {
System.out.print(lamList + "; ");
}
// 使用 lambda 表达式
lamLists.forEach((lamList) -> System.out.print(lamList + "; "));
需要遍历的数组.forEach((自定义的变量名,泛型会自动保持一致) -> 具体的方法或者操作)
常用的Iterator遍历。 person实体类就不展示了。
Person person = new Person();
List<Person> personList = new ArrayList<Person>();
person.setName("tomasi");
person.setAge("18");
person.setBirthday("1994-01-01");
//遍历的数组 自定义的对象名
personList.iterator().forEachRemaining(personList1 -> {
person.setName("tomasi2");
person.setAge("19");
person.setBirthday("1994-02-02");
});