我假设这里的实际问题是关于你应该如何处理多个 int值。你可以简单地做一个字典比较:
public static int compareByTime(Second s0, Second s1)
{
First f0 = s0.object;
First f1 = s1.object;
if (f0.month > f1.month) return 1;
if (f0.month < f1.month) return -1;
if (f0.day > f1.day) return 1;
if (f0.day < f1.day) return -1;
if (f0.hour > f1.hour) return 1;
if (f0.hour < f1.hour) return -1;
if (f0.minute > f1.minute) return 1;
if (f0.minute < f1.minute) return -1;
return 0;
}
在一般情况下,我建议你到不让一个类实现Comparable
。你应该这样做只有如果该类有自然顺序。而对于你的Second
班,这当然不是这种情况。在大多数情况下使用Comparator
要灵活得多。但是,此方法可用于实施Comparable
或实施Comparator
。
编辑:阐述它一点响应于评论:
此方法可用于两种Second
对象的一般比较。您可以使用它时,你让你的Second
类实现Comparable
接口:
Second implements Serializable, Comparable<Second>
{
First object;
int temperature;
@Override
public int compareTo(Second other)
{
return compareByTime(this, other); // The method from above
}
}
或者当你创建一个Comparator
为Second
对象,你可以使用它:
class SecondComparator implements Comparator<Second>
{
@Override
public int compare(Second s0, Second s1)
{
return compareByTime(s0, s1); // The method from above
}
}
在这两种情况下,你可以将新对象插入到总是排序的TreeSet<Second>
之类的集合中。或者,如果您使用的是List<Second>
,则可以对二进制搜索插入对象的位置进行二进制搜索。 (或者简单地将新对象添加到列表中,然后对列表进行排序,但这会效率不高)
?应该用int替换,因为你试图比较整数 –
你的?应该是这样的第二个:'Second implements Serializable,Comparable' –
Durandal
你是对的MagicMan。谢谢:) – RIPI