Как вернуть список лиц вместо строк, используя Java8? - PullRequest
0 голосов
/ 20 апреля 2020

Прямо сейчас я возвращаю строку с перевернутыми именами.

public static void main(String[] args) {

    List<Person> personList = new ArrayList<>();

    personList.add(new Person("Jamie", 23, Gender.MALE));
    personList.add(new Person("Tom", 33, Gender.MALE));
    personList.add(new Person("Nancy", 30, Gender.FEMALE));
    personList.add(new Person("Michelle", 10, Gender.FEMALE));

    System.out.println(reverseWordInList(personList));
}

public static String reverseWords(String sentence) {
    return PATTERN.splitAsStream(sentence)
            .map(s -> new StringBuilder(s).reverse())
            .collect(Collectors.joining(" "));
}

Но я хочу перевернутые значения в новом List<String> как это можно сделать?

1 Ответ

2 голосов
/ 20 апреля 2020

Вы можете напрямую использовать метод reverseWords в Stream<Person> и получить List<String> с обратными именами.

List<String> names = personList.stream()
                               .map(person -> reverseWords(person.getName())) 
                               .collect(Collectors.toList());

Следовательно, метод reverseWordInList может выглядеть следующим образом:

  • Person Speci c:

    reverseWordInList(personList);
    ...
    
    static List<String> reverseWordInList(List<Person> personList) {
        return personList.stream()
                         .map(person -> reverseWords(person.getName()))
                         .collect(Collectors.toList());
    }
    
  • Generi c

    reverseWordInList(personList, Person::getName);
    ...
    
    static <T> List<String> reverseWordInList(List<T> list, Function<T, String> getter) {
        return list.stream()
                   .map(t -> reverseWords(getter.apply(t)))
                   .collect(Collectors.toList());
    }
    

Обратите внимание, что методы возвращают новый список и не изменяют исходный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...