有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用compareTo()与Comparable<T>接口和arraylist

我正在做一个赋值,它要求我使用Comparable接口并使用compareTo()查看两个数字是否相等。我还需要使用ArrayList,但我不知道如何在测试类中执行compareTo()。 这是到目前为止我的代码

public abstract class Homework3 implements Comparable<Homework3>
{
// instance variables
public int pagesRead;
public String typeHomework;

public Homework3()
{
    pagesRead = 0;
    typeHomework = "none";
}

public int getPagesRead()
{
    return pagesRead;
}

public void setPagesRead(int p)
{
    pagesRead = p;
}

public String getTypeHomework()
{
    return typeHomework;
}

public void setTypeHomework(String t)
{
    typeHomework = t;
}

public abstract void createAssignment(int p);

public int compareTo(Homework3 p)
{
    if (pagesRead < p.pagesRead)
    {
        return -1;
    }
    else if (pagesRead == p.pagesRead)
    {
        return 0;
    }
    else
    {
        return 1;
    }
}
}


public class MyMath3 extends Homework3
{
public MyMath3()
{
    super();
}

public void createAssignment(int p)
{
    pagesRead = p;
    typeHomework = "Math";
}

public String toString()
{
    return typeHomework + " - must read " + pagesRead + " pages.";
}
}

还有3个类叫做MyEnglish3、MyScience3和MyJava3,但基本上与数学类相同。唯一改变的是家庭作业的类型。我试着打印一条语句,在打印每个家庭作业(数学、科学、英语、Java)的页数后,在最后一行写上“数学和英语的家庭作业页数相同”。我必须使用compareTo(),但我真的不知道如何比较arraylist中每个对象的页码。这是我的测试课

public class TestHomework3
{
public static void main(String [] args)
{
    List<Homework3> test = new ArrayList<Homework3>();
    test.add(new MyMath3());
    test.add(new MyScience3());
    test.add(new MyEnglish3());
    test.add(new MyJava3());
    for (Homework3 p : test)
    {
        if (p instanceof MyMath3) 
        {
            p.createAssignment(4);
        } 
        else if (p instanceof MyScience3) 
        {
            p.createAssignment(6);
        } 
        else if (p instanceof MyEnglish3)
        {
            p.createAssignment(4);
        }
        else if (p instanceof MyJava3) 
        {
            p.createAssignment(5);
        }
        System.out.println(p);
    } 
}
}  

我应该为每个循环更改参数吗?或者,在仍然使用arraylist和可比较界面的情况下,是否有其他方法可以比较每种类型作业的页码


共 (0) 个答案