2013-03-25 30 views
2

我有一個名爲recordInformation的LinkedList,它包含每個索引處的對象。該對象包含由空格分隔的名字,姓氏,名稱和餘額。因此,recordInformation看起來像 [[名字姓氏號碼餘額] [名字姓氏號碼餘額]]。 每次我向recordInformation添加一條記錄時,我都會根據姓氏對列表進行排序。我試圖編寫一個方法,但是當我在另一個方法中輸出列表時,索引沒有改變。比較正確的方法來檢查字母順序?如何根據姓氏對LinkedList進行排序而不使用排序方法(如Collections.sort)

public void sortRecords(LinkedList list){ 
    if (list.size()==1) 
     return; 

    Object obj = recordInformation.getLast(); 
    String sortVar = obj.toString(); 
    String[] varArray = sortVar.split(" "); 

    for (int i=0;i<list.size();i++){ 
     Object obj1 = recordInformation.get(i); 
     String compare = obj1.toString(); 
     String[] compareArray = compare.split(" "); 
     //varArray[1] and compareArray[1] hold the last names 
     if ((varArray[1].compareTo(compareArray[1]))<0){ 
      recordInformation.add(i,obj); 
      recordInformation.remove(list.size()-1); 
     } 

    } 

} 
+0

爲什麼不能使用Collections.Sort()? – Kevin 2013-03-25 23:02:48

+1

教授指令 – user2012751 2013-03-25 23:03:19

+2

這不是一種排序方法,它可能是一個嘗試[冒泡排序](http://en.wikipedia.org/wiki/Bubble_sort),但不是一個很好的方法。也許閱讀[排序算法](http://en.wikipedia.org/wiki/Sorting_algorithm)。也許還有[泛型](http://en.wikipedia.org/wiki/Generics_in_Java)。 – 2013-03-25 23:03:20

回答

0

如果你想保持排序順序,同時做很多插入操作,那麼LinkedList是最後一個使用的數據結構之一。

你在做什麼是Red-Black樹。在java中它的實現爲java.util.TreeMap

+0

我希望我有一個選擇。 LinkedList是必需的 – user2012751 2013-03-26 00:04:01

+0

這是功課嗎? – 2013-03-26 00:37:27

+0

是的..我明白了。謝謝 – user2012751 2013-03-26 03:31:19

0

如果您從開始就控制了列表,爲什麼不在正確的位置插入元素?

我的意思是如果有A,而你需要放C,那麼放A-> C,如果有B來,則放A-> B-> C。 這樣你就不會使用Collections.sort(或任何類型)。

+0

聽起來不錯,但如果用戶想要更改那裏的名字,程序中會有一個方法。當該方法運行時,該列表需要重新排序。不用擔心。我糾正了方法 – user2012751 2013-03-25 23:47:21

+0

一個O(n)排序,插入排序,使用這個想法。創建一個空列表,然後迭代原始列表,將每個元素插入新列表中的適當位置。新列表將在完成後排序。 – Kevin 2013-04-04 05:47:14

相關問題