Lambda表达式是Java 8中引入的一个重要特性,它是一种简洁而强大的语法结构,可以用于替代传统的匿名内部类。
Lambda表达式的语法结构如下:
(parameters) -> expression
或者
(parameters) -> { statements; }
其中,parameters是一个逗号分隔的参数列表,可以为空;expression是一个表达式,或者一组语句,可以是块语句,用于执行某些操作。
Lambda表达式通常用于替代匿名内部类,例如:
button.addActionListener(event -> System.out.println("Hello, world!"));
上面的代码使用Lambda表达式来定义一个事件处理程序,当按钮被点击时,将打印“Hello, world!”。在这个例子中,Lambda表达式只有一个参数,并且只执行一条语句,因此可以使用单个参数和表达式的简化语法。
Lambda表达式可以在很多场景下使用,例如在集合中进行遍历、排序、过滤等操作,或者作为方法参数和返回值。它可以大大简化代码,提高开发效率。
1. java集合遍历方法和Lambda方法
1.1. 使用迭代器遍历集合
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");Iterator<String> it = list.iterator();
while (it.hasNext()) {String s = it.next();System.out.println(s);
}
1.2. 使用增强for循环遍历集合
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");for (String s : list) {System.out.println(s);
}
使用Lambda表达式遍历集合
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");list.forEach(s -> System.out.println(s));
2. 排序示例
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");Collections.sort(list, (s1, s2) -> s1.compareTo(s2));
3. 线程示例
new Thread(() -> {System.out.println("Hello, world!");
}).start();
4. 文件过滤示例
File dir = new File(".");
File[] files = dir.listFiles(file -> file.getName().endsWith(".java"));
5. 使用lambda筛选数组的示例
int[] numbers = { 1, 2, 3, 4, 5 };
int[] evenNumbers = Arrays.stream(numbers).filter(n -> n % 2 == 0).toArray();
6. 函数式接口示例
interface MyFunction {void apply(String s);
}public void doSomething(MyFunction f, String s) {f.apply(s);
}doSomething((String s) -> System.out.println(s), "Hello world!");