在 Java 中,使用 lambda 表达式可以很方便地生成 Map。下面是一个示例:
假设我们有一个 Person 类,它有两个属性:firstName 和 lastName。现在我们有一个 Person 数组,希望使用这两个属性的拼接作为 Map 的 key,将每个 Person 对象作为 value。可以使用下面的代码实现:
Person[] people = {new Person("Alice", "Smith"), new Person("Bob", "Johnson"), new Person("Charlie", "Williams")}; Map<String, Person> map = Arrays.stream(people) .collect(Collectors.toMap(p -> p.getFirstName() + p.getLastName(), p -> p));
在这段代码中,我们使用 Arrays.stream() 将数组转换为 Stream,然后使用 collect() 方法将 Stream 转换为 Map。collect() 方法的参数是一个 Collector,我们使用了 Collectors.toMap() 方法来生成一个 Collector。
toMap() 方法的第一个参数是一个 Function,它接受一个 Person 对象作为输入,返回一个字符串作为 key。我们使用了 lambda 表达式来实现这个 Function,将 firstName 和 lastName 拼接起来作为 key。第二个参数也是一个 Function,它将 Person 对象直接作为 value。
最后,我们得到了一个使用 firstName + lastName 作为 key,Person 对象作为 value 的 Map。