2

正如标题所说。

我尝试使用 List[] 上的 Collections.sort() 和 ArrayList 的 .sort() 函数来搞乱一点,但我永远无法将它解析回枚举。

谢谢!

编辑:

这是一些伪代码和进一步的解释。我的目标是从 Hashtable 中获取 keys() 并按字母顺序执行涉及每个操作的复杂操作。

我目前的流程是:

  1. 拿一个我给的哈希表
  2. 从 ht 形成一个枚举
  3. 运行while循环,直到枚举为空

所以代码是这样的:

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

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

        /*
         * DO COMPLEX PROCESS
         */
    }
}

问题在于枚举中的数据必须按字母顺序排列(也就是说,“复杂过程”必须按字母顺序对每个键进行)。有什么解决办法吗?谢谢!

4

4 回答 4

4

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

Collections.enumeration(myList)

让它回到一个枚举......如果我正确地跟随你......

编辑:

你可以这样做...

List l = new ArrayList(ht.keySet());
Collections.sort(l)
于 2009-09-30T14:57:15.620 回答
2

如果您需要按键的顺序遍历项目,也许最好使用 aTreeMap而不是 a Hashtable。它的keySet方法将按顺序返回键。

于 2009-09-30T15:14:43.050 回答
0

将您的键存储在 ArrayList 中以对其进行排序怎么样?

    List<String> list = // create from htData.keys()
    Collections.sort(list);
    for(String s : list) {
    ...
于 2009-09-30T15:17:16.383 回答
0

以下应该工作:

Enumeration<String> enumeration = dictionary.keys(); // unsorted enumeration        
List list= Collections.list(enumeration); // create list from enumeration 
Collections.sort(list);
enumeration = Collections.enumeration(list);
于 2013-08-24T07:42:40.423 回答