1、使用 forEach 和 lambda 表达式遍历集合
import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> items = Arrays.asList("apple", "banana", "cherry"); // 使用 forEach 和 lambda 表达式遍历集合 items.forEach(item -> System.out.println(item)); } }
2、使用 forEach 和方法引用
import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> items = Arrays.asList("apple", "banana", "cherry"); // 使用 forEach 和方法引用遍历集合 items.forEach(System.out::println); } }
3、使用 forEach 遍历和累积操作结合
import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); // 使用 forEach 遍历集合并计算总和 final int[] sum = {0}; numbers.forEach(number -> sum[0] += number); System.out.println("Sum: " + sum[0]); } }
4、使用BinaryOperator<Integer>和forEach实现代码
import java.util.Arrays; import java.util.List; import java.util.function.BinaryOperator; import java.util.Map; public class Main { public static void main(String[] args) { BinaryOperator<Integer> add = (a, b) -> a + b;//lambda a, b : a + b BinaryOperator<Integer> sub = (a, b) -> a - b;//lambda a, b : a - b // 创建一个新的Map,接受符号和相应的BinaryOperator // 相当于 = {"+" : lambda a, b : a + b, "-" : lambda a, b : a - b} Map<String, BinaryOperator<Integer>> signs = Map.of("+", add, "-", sub); int a = 5; // a = 5 int b = 3; // b = 3 //循环遍历map并应用操作 signs.values().forEach(v -> System.out.println(v.apply(a, b))); } }
注意:Map.of("+", add, "-", sub);
用的是Java 10,如果Java 9+可以使用下面代码:
Map<String, BinaryOperator<Integer>> signs = new HashMap<>();
signs.put("+", add);
signs.put("-", sub);
5、代码优化
更好使用IntBinaryOperator
来避免装箱,可以使用下面写法的代码:
import java.util.Arrays; import java.util.List; import java.util.function.IntBinaryOperator; import java.util.Map; public class Main { public static void main(String[] args) { // signs = {"+" : lambda a, b : a + b, "-" : lambda a, b : a - b} Map<String, IntBinaryOperator> signs = Map.of("+", (a, b) -> a + b, "-", (a, b) -> a - b); int a = 5; // a = 5 int b = 3; // b = 3 // for i in signs.keys(): print(signs[i](a,b)) signs.values().forEach(v -> System.out.println(v.applyAsInt(a, b))); } }