在Java 8及更高版本中,使用Lambda表达式和Stream API可以遍历List、Set和Map。
下面是使用Lambda表达式遍历各种集合的示例:
在最后会介绍Lambda的用法为什么这样写。
遍历List
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
// 使用Lambda表达式遍历List
list.forEach(item -> System.out.println(item));
//或者
set.forEach(System.out::println);
}
}
遍历Set
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Cherry");
// 使用Lambda表达式遍历Set
set.forEach(item -> System.out.println(item));
//或者
set.forEach(System.out::println);
}
}
遍历Map
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 5);
map.put("Banana", 3);
map.put("Cherry", 10);
// 使用Lambda表达式遍历Map的键值对
map.forEach((key, value) -> System.out.println(key + " = " + value));
}
}
使用Lambda表达式可以简化代码,并提高代码的可读性。在上述示例中,我们使用forEach()
方法遍历集合,并使用Lambda表达式作为参数。对于List和Set,Lambda表达式的参数是集合中的元素。对于Map,Lambda表达式的参数是键和值。重复一遍我上面的话:Lambda表达式可以简化代码,并提高代码的可读性。
(i)-> System.out.println(i))详细解释
Lambda表达式是一个匿名函数,通常用于实现函数式接口。
Lambda表达式的一般形式为:
(parameters) -> expression
或者:
(parameters) -> { statements; }
在Lambda表达式中,箭头符号 ->
用于分隔参数列表和表达式或语句块。Lambda表达式通常用于实现函数式接口,例如Java中的 java.util.function.Consumer
接口。
例如,当我们在遍历List或Set时,可以将Lambda表达式作为参数传递给 forEach()
方法:
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
// 使用Lambda表达式遍历List
list.forEach(i -> System.out.println(i));
在这个示例中,forEach()
方法接收一个 Consumer
类型的参数,它是一个函数式接口。我们使用Lambda表达式 (i) -> System.out.println(i)
实现了这个接口,实现了对List中每个元素的输出操作。
在上面的遍历示例中,我使用了System.out::println 这个也属于lambda表达式:
方法引用是一种简化Lambda表达式的方式,可以将已有方法作为Lambda表达式的实现。
方法引用的一般形式为:
ClassName::methodName
或者:
objectReference::methodName
在方法引用中,双冒号 ::
用于引用对象的方法。例如,System.out::println
表示引用 System.out
对象的 println
方法。
System.out::println
可以用在任何需要一个接收单个参数的函数式接口的地方,例如在遍历List或Set时,可以将这个方法引用作为参数传递给 forEach()
方法:
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
// 使用方法引用遍历List
list.forEach(System.out::println);
这里,System.out::println
方法引用将替代Lambda表达式 i -> System.out.println(i)
。当 forEach()
方法调用方法引用时,会将List中的每个元素作为参数传递给 System.out.println()
方法,实现对List中每个元素的输出操作。
版权属于:戏人看戏博客网
本文链接:https://day.nb.sb/archives/501.html
若无注明均为戏人看戏原创,转载请注明出处,感谢您的支持!