2014-02-28 93 views
-2

大家好我有一個名爲GEN類和我有這樣的數組我想要什麼,到是有點基於時間變量數組 所以theone用最短的時間必須是gend [0]。 我希望我解釋清楚我的問題,我使用NetBeans排序對象的數組基於一個變量[解決]

public class GEN 
{ 
    int[][] mark=new int[TIMELIMIT][N+1]; 
    int[][] dimark=new int[TIMELIMIT][N+1]; 
    int time=0; 
    int[] touched=new int[N+1]; 
} 
public GEN[] gend=new GEN[GENNUM]; 
+0

您的意思是對象 – keyser

+0

[Java Sorting:按屬性對對象數組排序,不允許使用Comparable對象](http://stackoverflow.com/questions/12449766/java-sorting-sort-an-對象的數組對象,不允許使用的對象)以及許多類似的問題。 –

+0

我會補充說,那裏有多個重複。某些關鍵字,您可能需要:_sort_,_array_,_java_,_object_,_comparator_等 – keyser

回答

0

您需要實現Comparable

public class GEN implements Comparable<GEN> 
{ 
    int[][] mark=new int[TIMELIMIT][N+1]; 
    int[][] dimark=new int[TIMELIMIT][N+1]; 
    int time=0; 
    int[] touched=new int[N+1]; 

    int compareTo(GEN obj) 
    { 
     // compareTo returns a negative number if this is less than obj, 
     // a positive number if this is greater than obj, 
     // and 0 if they are equal. 
     return this.time - obj.time; 
    } 
} 

public GEN[] gend=new GEN[GENNUM]; 

通過實施Comparable,你就能夠使用Arrays.sort()一旦填充了GEN對象進行排序的數組。 sort函數使用compareTo來確定對象的正確排序。因此,一旦你已經實現了Comparable,你只需要編寫:

Arrays.sort(gend); 
+0

其實我是新與Java這樣你能給與排序的完整的例子,謝謝你很多 – esezen

+0

當我使用它,我得到這個: 異常在線程「AWT-EventQueue的-0」顯示java.lang.NullPointerException \t在proce.main.Main $ GEN.compareTo(Main.java:65) \t at proce.main.Main $ GEN.compareTo(Main.java:57) \t at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java :290) – esezen

+0

@esezen我做了一些編輯。希望有所幫助。 –

0

真的,你應該看看Java文檔鏈接盧克·威利斯張貼在他的回答,其令人印象深刻看到類的數量之多(其中很大一部分經常使用),它們是「已知實施類」。如果你仔細查看這個列表,並考慮你熟悉的類比較強大(如果你熟悉自動裝箱/拆箱,那麼你將會是,如果沒有的話,你可以點擊那些在那個地方的類Java doc。

您可以坐在那裏嘗試第一次弄清楚如何對基於內部每個對象的實例變量(如Card對象的基本int faceValue)的ArrayList<SomeObjectType> arrList進行排序的算法。 ..

... 60+分鐘以後,因爲你不熟悉如何創建一個排序算法,將需要一段時間。此外,這將是一個有點混淆代碼了大塊。

...或者你可以閱讀Comparable並實現它。

編輯:不是說用手工製作的算法將是一件壞事,它肯定是一個很好的學習經驗,但與如此強大和凝結的工具在你的代碼來實現。

+0

當我使用它,我得到這樣的:異常的線程「AWT-EventQueue的-0」顯示java.lang.NullPointerException在proce.main.Main $ GEN.compareTo (Main.java:65)在proce.main.Main $ GEN.compareTo(Main.java:57)在java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:290) – esezen

相關問題