【问题标题】:How to return information that no object meets the conditions of the method?如何返回没有对象满足方法条件的信息?
【发布时间】:2023-01-31 23:11:04
【问题描述】:

我是 Java 的新手,但遇到了一些问题。我想知道如何返回列表中没有对象满足我的方法条件的信息。

我有多个对象的列表:

List<Person> new ArrayList<>(Arrays.asList( new Person (name, surename, yearOfBirth) ));

我想找到 1990 年之前出生的人:

public static List<Person> returnPeopleBornBefore1990(List<Person> list) {
    List<Person> peopleList = new ArrayList<>();
    for (Person person : list) {
        if (person.getyearOfBirth() < 1990) {
            peopleList.add(people);
        }
    }
    return peopleList;
}

如何返回名单中没有1990年以前出生的信息?目前,它只显示一个空列表,我想避免这种情况。

想过try catch block和exception,不知道是不是好办法。也许你有什么想法?

【问题讨论】:

  • 我只是返回您在代码中已有的空列表。它工作正常,因为“未找到任何值”。
  • 我想不出什么好的理由以避免返回空列表。你能解释一下你为什么要这样做吗?
  • 没有看到此代码有任何问题。此方法的调用者应检查 isEmpty()。如果是真的,那么没有人符合你要的条件。

标签: java list


【解决方案1】:

您可以使用 Optional<List>,它是 java.util 的一部分

该代码如下所示:

public static Optional<List<Person>> returnPeopleBornBefore1990(List<Person> list) {
   List<Person> peopleList = new ArrayList<>();
       for (Person person : list) {
           if (person.getyearOfBirth() < 1990) {
               peopleList.add(people);
           }
       }
    return Optional.ofNullable(peopleList);
}

如果您将在不检查 Optional isEmpty() 的情况下使用该方法,它将给您一个警告。

你会在这里找到更多信息Uses for Optional

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 2017-10-29
    • 2021-12-08
    • 1970-01-01
    相关资源
    最近更新 更多