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) 个答案