あなただけの(Person.getGender
のようなアクセサがあると仮定)性別によってフィルタリングする場合は、その後、あなただけfilter
を追加する必要があります。
List<Person> malePeople;
malePeople = personDao.getFileInformation(filePath)
.skip(1)
.map(this::getPerson)
.filter(Objects::nonNull)
.filter(p -> p.getGender() == gender.male) // or gender.female
.collect(Collectors.toList());
するのではなくグループあなたの結果、下記の意志にしたい場合あなたを助ける:
List<Person> femalePeople = peopleByGender.get(gender.female);
:
Map<gender, List<Person>> peopleByGender;
peopleByGender = personDao.getFileInformation(filePath)
.skip(1)
.map(this::getPerson)
.filter(Objects::nonNull)
.collect(Collectors.groupingBy(Person::getGender));
今ですべての女性の人々にアクセス
と男性のものと:
.filter(this::getMale) // or: YourClass::getMale for a static method
:あなただけの、あなたは、次のいずれかを使用することができ、フィルタ述語(p -> p.getGender() == gender.male
)を簡素化するための方法を使用したい場合は
List<Person> malePeople = peopleByGender.get(gender.male);
this::getMale
は、以下の方法を指す:
boolean getMale(Person p) {
return p.getGender() == gender.male;
}
又は
は、以下の方法を指し
.filter(getMale())
:
Predicate<Person> getMale() {
return p -> p.getGender() == gender.male;
}
getMaleとgetFemaleはそれぞれ何を返すのでしょうか?人?または男性/女性のオブジェクトですか? – Eugene
@Eugene:私はこの質問をあなたの(削除された)回答のように解釈しますが、質問者がとにかく気にしなければ努力する価値はないと思われます... – Holger
@Holger私は実際に注意を喚起したいなぜなら、私は本当に、 'return p.getGender()== Gender.MALE? this :: getMale:this :: getFemale; 'はコンパイルされません。私は深く掘り下げていないが、一度注意が払われれば、私は望んでいた。 – Eugene