我假設這裏的實際問題是關於你應該如何處理多個 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