java - 如何使用 Java8 返回人员列表而不是字符串?
问题描述
现在,我正在返回一个名称相反的字符串。
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>
怎么做?
解决方案
您可以直接使用 中的方法reverseWords
并Stream<Person>
获取List<String>
具有相反名称的 。
List<String> names = personList.stream()
.map(person -> reverseWords(person.getName()))
.collect(Collectors.toList());
因此,该方法reverseWordInList
可能如下所示:
Person
具体的:reverseWordInList(personList); ... static List<String> reverseWordInList(List<Person> personList) { return personList.stream() .map(person -> reverseWords(person.getName())) .collect(Collectors.toList()); }
通用的
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()); }
请注意,这些方法返回一个新列表并且不会修改原始列表。
推荐阅读
- android - 卡在布局格式上
- ansible - Ansible:将所有软件包升级到最新版本,除了 foo、bar
- python - ImportError:无法导入名称“ApiException”运行 python manage.py
- python - 带有压缩静态文件的 Django Whitenoise
- druid - 启动 Druid 消费来自 kafka 的数据
- javascript - 如何为 IE11 内联 Rollup/Babel polyfill
- css - Safari iOS 中奇怪的“过滤器:灰度”错误?
- javascript - 如何使用 Artillery 自动生成 OAuth 2.0 令牌?
- ruby - 为 D&D 制作掷骰子;为什么 Ruby 会给我一个 NameError?
- sql-server - 需要帮助将此代码段从 Oracle 转换为 SQL Server