日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java8自定义收集器_使用自定义收集器进行Java 8分组?

發布時間:2023/12/1 java 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java8自定义收集器_使用自定义收集器进行Java 8分组? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我有以下課程。

class Person {

String name;

LocalDate birthday;

Sex gender;

String emailAddress;

public int getAge() {

return birthday.until(IsoChronology.INSTANCE.dateNow()).getYears();

}

public String getName() {

return name;

}

}

我希望能夠按年齡分組,然后收集人員名稱列表,而不是人員對象本身。全部以一個漂亮的lamba表達式表示。

為了簡化所有步驟,我鏈接了當前的解決方案,該解決方案按年齡存儲分組的結果,然后對其進行迭代以收集名稱。

ArrayList members = new ArrayList<>();

members.add(new OtherPerson("Fred", IsoChronology.INSTANCE.date(1980, 6, 20), OtherPerson.Sex.MALE, "fred@example.com"));

members.add(new OtherPerson("Jane", IsoChronology.INSTANCE.date(1990, 7, 15), OtherPerson.Sex.FEMALE, "jane@example.com"));

members.add(new OtherPerson("Mark", IsoChronology.INSTANCE.date(1990, 7, 15), OtherPerson.Sex.MALE, "mark@example.com"));

members.add(new OtherPerson("George", IsoChronology.INSTANCE.date(1991, 8, 13), OtherPerson.Sex.MALE, "george@example.com"));

members.add(new OtherPerson("Bob", IsoChronology.INSTANCE.date(2000, 9, 12), OtherPerson.Sex.MALE, "bob@example.com"));

Map> collect = members.stream().collect(groupingBy(Person::getAge));

Map> result = new HashMap<>();

collect.keySet().forEach(key -> {

result.put(key, collect.get(key).stream().map(Person::getName).collect(toList()));

});

不理想,為了學習,我想有一個更優雅,更有效的解決方案。

總結

以上是生活随笔為你收集整理的java8自定义收集器_使用自定义收集器进行Java 8分组?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。