2017-07-08 100 views
-1

我有一個保存int值,String和double的對象。該對象的實例存儲在ArrayList中。我想現在打印該對象,但是我想首先按字符串值對ArrayList進行排序。我很難概念化我如何通過選擇排序等方式來實現這一點。任何幫助將不勝感激!在Java中排序對象的ArrayList

以下是我認爲你應該做的事情,但那似乎並不奏效。

public static void sSortStrings(ArrayList<Student> list) { //Selection sort 
    int count1; 
    int count2; 
    int largest; 
    String temp; 
    for (count1 = 0; count1 < list.size() - 1; count1++) { 
     largest = 0; 
     for (count2 = largest + 1; count2 < list.size() - count1; count2++) { 
     if (list[largest].compareTo(list[count2]) < 0) { 
     largest = count2; 
     } 
     } 
     temp = list[list.size() - 1 - count1]; 
     list[list.size() - 1 - count1] = list[largest]; 
     list[largest] = temp; 
    } 
    } 

就扔在那裏我的教授曾在源代碼中包含這一點,但我不知道我是否應該調用它,而不是比較方法

public boolean nameComesBefore(Student other) { 
    return name.compareToIgnoreCase(other.name) < 0; 
} 
+1

歡迎來到Stack Overflow!它看起來像你需要學習使用調試器。請幫助一些[互補調試技術](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。如果您之後仍然遇到問題,請隨時返回一個[最小,完整且可驗證的示例](http://stackoverflow.com/help/mcve),以說明您的問題。 –

+0

我認爲** Comparable **將滿足您的需求。您可以訪問此[鏈接](http://beginnersbook.com/2013/12/java-arraylist-of-object-sort-example-comparable-and-comparator /) 瞭解更多信息 –

回答

0

假設Student類具有String屬性的getter。 然後,您需要做的是對列表進行排序
list.sort(Comparator.comparing(Student::getName))

這將按學生姓名對給定列表進行排序。 如需更多選項,請檢查javadoc的List.sort()Comparator