我如何创建另一个方法中已存在的新对象(java)

时间:2017-12-02 23:24:20

标签: java arrays methods

我有一个阵列" movieScedule"包括对象电影。在这个(电影)对象中,我有票价。

现在我想创建一个显示电影最贵票的方法 方法:

public Movie mostExpensive()
{
....
....
....
}

现在我想在这个方法中创建新的电影对象 然后循环运行阵列中的所有电影 然后另一个for循环从整个电影的索引0开始运行并使用getMoviePrice()方法检查每个电影价格

最后,我想将我在此方法中创建的对象影片声明为最高moviePrice 然后返回(电影)

有什么想法吗?也许有更好的方法?

3 个答案:

答案 0 :(得分:1)

所以我假设你有一个Movie课程,就像这样:

class Movie {
  private Double moviePrice;

}

你想要找到最高价,而不是价格最高的电影。

Movie mostExpensive() { 
   Movie  mostExpensiveMovie = null;

   for(Movie movie: movieScedule){
     if(mostExpensiveMovie == null || //use for the first element
         movie.getMoviePrice() > mostExpensiveMovie .getMoviePrice(){ // compare previous film price with current one
         mostExpensiveMovie = movie;
     }
    }
   return mostExpensiveMovie ; // return most expensive movi
  }

这将更便宜,无需创建新的Movie实例。 如果需要,也可以通过java8流实现,检查this stack post

Optional<Movie> mostExpensiveMovie = Arrays.stream(movieScedule)
.max(Comparator.comparing(Movie::getTicketPrice));

答案 1 :(得分:0)

很难理解你的问题。希望这是你想要的。获得最昂贵票证的简单方法是:

ArrayList<Movie> movies = new ArrayList<>();
//populate array list

public Movie getMostExpensiveTicket(ArrayList<Movie> movies){
    Movie mostExpensive = movies.get(0); // not null save
    for(Movie movie : movies){
        if(movie.getMoviePrice() > mostExpensive.getMoviePrice()) mostExpensive = movie;
    }
    return mostExpensive;
}

答案 2 :(得分:0)

如果您使用的是Java 8或更高版本,我建议您利用java流。它看起来像这样:

public static Movie mostExpesive(Movie[] MoviesSchedule) {
    Optional<Movie> maxPriceMovie = Stream.of(MoviesSchedule)
            .collect(Collectors.maxBy((a, b) -> a.price - b.price));
    return maxPriceMovie.get();
}