java lambda 使用数组里的对象的多个属性拼接作为key 生成map

java lambda 文章 2022-12-16 13:45 3295 0 全屏看文

AI助手支持GPT4.0

在 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。


-EOF-

AI助手支持GPT4.0