Javaストリームに一つだけの要素のリストを検索し、一致するには?

Meysam Zarei:

私はいくつかの家の番号を含むリストを持っている、と彼らは「isPrimary」と「番号」の性質を持っています。

"homeNumbers": [
      {
        "isPrimary": true,
        "number": "9999999999"
      },
      {
        "isPrimary": false,
        "number": "9999999323"
      }
    ]

今、私はどちらか一方のみの一致するように、リスト上の2つの条件を書きたい、私は1つのプライマリ番号を持っている必要があり、このリストを意味し、その数はnullであってはなりません。

私はそこに任意の素数であるかどうか、今、私はそれらのひとつが主でチェックして展開する方法を知りたいかどうかのコードの下に書かれたが、それだけでチェックしています。

private boolean isSetPrimaryHomeNumber(UpdateWorkerDto updateWorkerDto) {
    return updateWorkerDto.getPhoneNumbers().getHomeNumbers().stream().anyMatch(
            number -> Objects.requireNonNullElse(number.getIsPrimary(), false) && !number.getNumber().isEmpty());
}
Nicktar:

あなたが最初の主要numberstでフィルタリングして、非ヌル番号の再それらをフィルタリングすることができ、その後、カウントし、このように1と比較:

boolean isValid(List<HomeNumber> numbers) {
    return numbers.stream()
                  .filter(HomeNumber::isPrimary)
                  .filter(n -> Objects.notNull(n.getNumber()))
                  .count() == 1;
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=20948&siteId=1