我目前正在开发此应用程序,用于跟踪跟踪(跟踪跟踪?)日运行和显示排行榜。这是一个类,所以我不是必须寻找代码,只是一些关于如何去做的想法。无论如何,应用程序当前将获取输入信息(来自底部文本字段),创建RaceEntrant对象的LinkedList(下面显示的类),并在右侧创建一个队列,当参与者通过他们的运行时清空。问题是,我需要在(灰色)排行榜区域中从最小到最大的runTime排序RaceEntrants。我在想是否有任何方法可以用LinkedList listIterator方法做到这一点,但我无法弄明白,假设它甚至可以工作。这是正确的想法还是有更好的方法来解决这个问题,如果有可能,我将如何看待listIterator的想法呢?很抱歉这个冗长的问题,我们非常感谢您的帮助。
class RaceEntrant implements Comparable<RaceEntrant>
{
private String name,
car;
private double runTime;
public RaceEntrant(String name, String car)
{
this.name = name;
this.car = car;
}
public String getName()
{
return name;
}
public String getCar()
{
return car;
}
public double getTime()
{
return runTime;
}
public void setTime(double time)
{
this.runTime = time;
}
@Override
public String toString()
{
StringBuilder sb = new StringBuilder("");
sb.append(getName());
sb.append(" ");
sb.append(getCar());
sb.append("\n" );
sb.append("Best time: " + getTime() + "\n");
return sb.toString();
}
@Override
public int compareTo(RaceEntrant entrant)
{
if (this.runTime > entrant.runTime)
return 0;
else
return 1;
}
}
答案 0 :(得分:4)
看看java.util.TreeSet
- 它是SortetSet
的一个实现,应该做你想要的。
其他一些事情:
Comparable
,它还应覆盖hashCode()
和equals()
以确保正确性。 (通常equals()
会委托给compareTo()
- 这意味着在equals()
中你会有return compareTo((RaceEntrant) obj) == 0
这样的行。Comparator
的实施方案,以便与TreeSet
一起使用,这样您就可以避免让RaceEntrant
实施Comparable
。TreeSet
或Comparator
,Comparable
会在添加/删除元素时自动对其进行重新排序。