2009-09-30 89 views
2

正如標題所說。有沒有簡單的方法來在Java中對字符串枚舉進行字母順序排序?

我試着在ArrayList的List []和.sort()函數上調用Collections.sort(),但我永遠無法將其解析回Enumeration。

謝謝!

編輯:

這是一些pseduocode和進一步的解釋。我的目標是從Hashtable中獲取keys(),並按字母順序執行涉及每個操作的複雜操作。

我現在的流程是:

  1. 就拿我給出一個哈希表
  2. while循環,直至枚舉空單從HT
  3. 運行一個枚舉

所以代碼是這樣的:

public void processData(Hashtable<String,GenericClass> htData) 
{ 
    Enumeration<String> enData = htData.keys(); 

    while(enData.hasMoreElements()) 
    { 
     String current = enData.nextElement(); 

     /* 
     * DO COMPLEX PROCESS 
     */ 
    } 
} 

問題在於,枚舉中的數據必須是按字母順序排列的(也就是說,必須按字母順序對每個鍵執行「複雜過程」)。任何解決方案謝謝!

+1

犯錯,Collections.sort()採用一個List作爲參數,而不是一個列表[]。而ArrayList沒有sort()方法。你可能想要重述你的問題。 – 2009-09-30 14:55:13

+0

可能會張貼一些僞代碼或清晰的內容... – danb 2009-09-30 14:58:16

+0

對不起。剛剛更新了OP。 – Monster 2009-09-30 15:08:58

回答

4

如果你有一個排序列表,你可以使用

Collections.enumeration(myList中)

拿回來一個枚舉......如果我正確地跟着你..

編輯:

你可以這樣做......

List l = new ArrayList(ht.keySet()); 
Collections.sort(l) 
+0

考慮到我的更新,我不認爲有一種方法可以在不使用Enumeration的情況下從HT獲取密鑰(唯一真正起作用的HT方法是keys(),它將返回Enum) – Monster 2009-09-30 15:10:19

+0

您剛剛錯過了keySet ()方法...這將給你更容易的工作...在我編輯的答案中的快速演示 – danb 2009-09-30 15:24:19

+0

太好了,謝謝!我用你的(和KLE的for-loop)來通過每個項目。 – Monster 2009-09-30 17:36:46

2

如果您需要遍歷在按鍵順序的項目上,最好使用TreeMap而不是Hashtable。它的keySet方法將按順序返回鍵。

+0

有趣。不幸的是,Hashtable是一個先決條件。 – Monster 2009-09-30 17:20:11

+0

在這種情況下,請使用danb的解決方案。 – Thomas 2009-09-30 17:31:04

0

如何將您的密鑰存儲在ArrayList中進行排序呢?

List<String> list = // create from htData.keys() 
    Collections.sort(list); 
    for(String s : list) { 
    ... 
0

下面應該工作:

Enumeration<String> enumeration = dictionary.keys(); // unsorted enumeration   
List list= Collections.list(enumeration); // create list from enumeration 
Collections.sort(list); 
enumeration = Collections.enumeration(list); 
相關問題