【问题标题】:How to return multiple objects in java given a certain parameter给定某个参数,如何在java中返回多个对象
【发布时间】:2016-06-13 09:40:11
【问题描述】:

下面的方法接收来自用户的starRating 并搜索数组以匹配该评级。当值与其中一个对象匹配时,它应该返回它。尽管该方法有效,但它只返回它找到的一个Movie 对象,而不是每一个。例如,如果我输入 3,它会返回第一部电影的星级为 3,然后什么也不做。另外,如果星级不存在,我如何返回一个空列表?我做了一些研究,但似乎找不到任何有用的东西。谢谢。

/**
 * Write a method that returns a list of movies with the given star rating.
 * Return an empty list if the star rating does not exist.
 */
public Movie getMoviesWithRating(int rating)
{
    for (Movie movies : movies){
        if(movies.getStarRating() == rating){
            return movies;
        }
    }
    return //EmptyList
}

【问题讨论】:

  • 嗯,评论说要返回一个列表。可以试试吗?
  • 这是一个 java8 练习吗?你能用 lambdas 吗??
  • 你是如何定义电影的

标签: java arraylist return


【解决方案1】:

你可以试试下面的:

public List<Movie> getMoviesWithRating(int rating)
{
    List<Movie> movies = new ArrayList<Movie>();
    for (Movie movies : movies){
        if(movies.getStarRating() == rating){
            movies.add(movie);
        }
    }
    return movies.
}

如果您正在使用Java 8,您可以尝试:

public List<Movie> getMoviesWithRating(int rating) {
    return movies.stream().filter(movie -> movie.rating == rating).collect(Collectors.toList());
}

如果没有找到项目,更好的方法可能是抛出exception

public Movie getMoviesWithRating(int rating){
    for(final Movie movie : Movie){
         if (movie.getRating() == rating) {
             return movie;
         }
    }
    throw new NoSuchElementException();
}

【讨论】:

    【解决方案2】:

    您必须具有 List 的返回类型才能返回电影列表。

    public List<Movie> getMoviesWithRating(int rating)
    {
        List<Movie> movies = new ArrayList<Movie>();
        for (Movie movies : movies){
            if(movies.getStarRating() == rating){
                movies.add(movie);
            }
        }
        return movies.
    }
    

    如果你不能改变返回类型,如果没有找到给定评分的电影,至少返回一个空值。

    public Movie getMoviesWithRating(int rating)
    {
        for (Movie movies : movies){
            if(movies.getStarRating() == rating){
                return movie;
            }
        }
        return null.
    }
    

    【讨论】:

      【解决方案3】:

      这可能会帮助你建立你的逻辑。谢谢你..希望d最好:)

       public ArrayList<Movie> getMoviesWithRating(int rating)
          {
            ArrayList<Movie> obj_arrMovie = new ArrayList<Movie>();
              for (Movie obj_movies : movies){ //Iterate throughout the movies Array.
                  if(obj_movies.getStarRating() == rating){ //Conditional Statement to check whether it is equivalent to rating or not ?.
                       obj_arrMovie.add(obj_movies); //Add all movie object to arraylist which can pass the condition.
                  }
              }
              return obj_arrMovie;
          }
      

      【讨论】:

      • 对不起,我没有看到方法的返回类型。现在我认为它的工作。我只专注于逻辑领域,这是一个错误。谢谢
      【解决方案4】:

      如果你有 Java 8,你可以这样做:

      public List<Movie> getMoviesWithRating(int rating) {
          return movies.stream().filter(movie -> movie.rating == rating).collect(Collectors.toList());
      }
      

      【讨论】:

        猜你喜欢
        • 2014-03-23
        • 2010-10-02
        • 1970-01-01
        • 2011-01-24
        • 1970-01-01
        • 2020-11-01
        • 2012-04-23
        • 2013-10-23
        • 1970-01-01
        相关资源
        最近更新 更多