溫馨提示×

java中collectors.tomap的用法是什么

小億
198
2023-12-27 23:44:30
欄目: 編程語言

在Java中,Collectors.toMap()方法用于將流(Stream)元素收集到Map集合中。它接受兩個參數(shù),分別是keyMapper和valueMapper,用于指定如何生成Map的鍵和值。

語法:

public static <T, K, U> Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper)

參數(shù)說明:

  • T:流元素的類型
  • K:生成Map的鍵的類型
  • U:生成Map的值的類型
  • keyMapper:將流元素映射為鍵的函數(shù)
  • valueMapper:將流元素映射為值的函數(shù)

示例: 假設(shè)有一個Person類,包含name和age屬性?,F(xiàn)在有一個Person的List,我們想將List中的Person對象按照name作為鍵,age作為值,生成一個Map。

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Person> persons = List.of(
                new Person("Alice", 25),
                new Person("Bob", 30),
                new Person("Charlie", 35)
        );

        Map<String, Integer> map = persons.stream()
                .collect(Collectors.toMap(Person::getName, Person::getAge));
        System.out.println(map);
    }
}

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

輸出結(jié)果:

{Alice=25, Bob=30, Charlie=35}

在上面的示例中,通過Collectors.toMap(Person::getName, Person::getAge),將List中的Person對象按照name作為鍵,age作為值,生成了一個Map。最后輸出結(jié)果為{Alice=25, Bob=30, Charlie=35}

0