Java stream API: are there syntax sugar for identi

2019-02-22 10:16发布

问题:

We use several Map as simple memory DB over list of objects:

class Person {
    public String id;
    public String phone;
    public String email;
    // and get/set and other fields...
}

List<Person> persons;
Map<String, Person> emailLookup = persons.stream()
        .collect(Collectors.toMap(Person::getEmail, p -> p));
Map<String, Person> phoneLookup = persons.stream()
        .collect(Collectors.toMap(Person::getPhone, p -> p));
Map<String, Person> idLookup = persons.stream()
        .collect(Collectors.toMap(Person::getId, p -> p));

Are there any syntax sugar or built-in functor in Java SE to replace p -> p with something else?

回答1:

You could use Function.identity() but if you want short then I don't think you'll beat your existing p -> p.