繁体   English   中英

使用compareTo()对对象数组进行排序

[英]Sorting arrays of objects using compareTo()

我可能会比这更难......但我的任务是创建一个实现Comparable的showtimes类。 有了这个,它构建了几个不同剧院的列表,其中包括时间等等。然后我必须使用compareTo()方法对其进行排序,首先是它所显示的电影,以及电影。标题。 我有以下代码......当我尝试输出排序结果时出现混乱。 我把它输出到比较字符串的地方输出 - 或+数字。

public class ShowTimeTest {


public static void main(String[] args) {
    ShowTime[] movieTimes= new ShowTime[20];
    // TODO Auto-generated method stub
    //******************************************************
    //Instantiates 20 showtime objects
    //******************************************************



ShowTime cinemark1 = new ShowTime("Cinemark", "Lorde", "Friday @ 3:30", "Saturday @ 7:00", "Sunday @ 6:00","R", 1, 2);
ShowTime cinemark2 = new ShowTime("Amstar Cinemas", "Star Wars", "Thursday @ 12:00AM", "Monday @ 4:00PM", "Sunday @ 3:45PM","R", 1, 2);
ShowTime cinemark3 = new ShowTime("Fayette Movies", "Pokemon", "Friday @ 3:30", "Saturday @ 7:00", "Sunday @ 6:00","R", 1, 2);
ShowTime cinemark4 = new ShowTime("Dollar Theatre", "Reincarnated", "Friday @ 3:30", "Saturday @ 7:00", "Sunday @ 6:00","R", 1, 2);
ShowTime cinemark5 = new ShowTime("Rad Chads Cinemas", "Lorde", "Friday @        3:30",     "Saturday @ 7:00", "Sunday @ 6:00","R", 1, 2);
movieTimes[0] = cinemark1;
movieTimes[1] = cinemark2;
movieTimes[2] = cinemark3;
movieTimes[3] = cinemark4;
movieTimes[4] = cinemark5;

for(int i = 1; i < 5; i ++){
    System.out.println(movieTimes[i].compareTo(movieTimes[i-1]));

 }
}
}

续...

public class ShowTime implements Comparable<ShowTime>{

public String name, title, rating, showTime1, showTime2, showTime3;
public double ticket, adultTicket;
public String[] times = new String[3];

public ShowTime(String theatreName, String movieTitle, String showTime1, String showTime2, String showTime3 , String movieRating, double childTicket, double aTicket)
{
    // TODO Auto-generated constructor stub
name = theatreName; 
title = movieTitle;
times[0] = showTime1;
times[1] = showTime2;
times[2] = showTime3;
rating = movieRating;
ticket = childTicket;
adultTicket = aTicket;
}
public String toString(){
    String out = "Theatre: ";
    out += name+ "  " + "Movie: " + title + " " + "Rating " + rating + " " + "ShowTimes " + times[0] + " " + times[1] + " " +  times[2]
            +  " " + "Adult Cost: " + adultTicket + " " + "Child Ticket: " +ticket;
    return out;
}
public int compareTo(ShowTime other) {
    // TODO Auto-generated method stub
    //sorts the showtimes by theater(NAME) and movie(TITLE)
    int result;

    if(name.equals(((ShowTime)other).name)){
        result = title.compareTo(((ShowTime)other).title);
    }

    else{
        result = name.compareTo(((ShowTime)other).name);
    }
    return result;
}
}

使您的类实现Comparable接口的重点是您可以对ShowTime数组进行排序。 你已经完成了所有艰苦的工作。 现在只需应用Arrays.sort ,坐下来欣赏电影。

由于这是一个教育节目,让我100%清晰透明:你已经拥有了一个Object[]其元素实现了Comparable ,即movieTimes 所以,你需要做的就是添加单行:

Arrays.sort(movieTimes);

请注意,这将失败,直到你用20部电影填满你的影院(或宣称它只是一部只能容纳5部电影的迷你剧)。

您可以使用Collections类:

List<ShowTime> list = Arrays.asList(array);
Collections.sort(list);
movieTimes = list.toArray();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM