java中怎么使用lambda表达式遍历list,set,map

文章 , 技术分享
389 0

在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中每个元素的输出操作。

最后更新 2023-07-15
评论 ( 0 )
OωO
隐私评论