2017-12-02 112 views
0

我有一个包含对象Movie的数组“movieScedule”。在这个(电影)对象中,我有票的价格。如何创建已存在的另一种方法(java)的新对象

现在我想创建,展示了最昂贵的张电影票 制备方法的方法:

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

现在我想创造这个方法 内新的电影对象,然后循环运行遍及阵列 在电影,然后另一个用于循环从索引0遍布电影运行,并通过使用getMoviePrice()方法

在端检查每个电影的价格,我想声明我内部此创建的对象的电影方法为高est moviePrice 然后返回(电影)

任何想法?也许有更好的方法?

+0

听起来像个好主意 - 去为它吧! – alfasin

+0

我不知道如何去做这就是问题嘿嘿 –

+0

欢迎来到Stackoverflow,请阅读[如何问](https://stackoverflow.com/help/how-to-ask)。请特别注意[如何创建MCVE](https://stackoverflow.com/help/mcve)。您将付出更多努力发布一个好问题:一个容易阅读,理解和[主题](https://stackoverflow.com/help/on-topic) - 的机会更高会吸引相关人员,你会得到更快的帮助。祝你好运! – alfasin

回答

1

所以,我认为,你有一个电影类,像这样:

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)); 
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; 
} 
+0

贝里更快,他的答案是空的保存。所以请使用他的方法。 – OmnomnomTee

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(); 
} 
相关问题