【问题标题】:Is there a simple way to alphabetize a String Enumeration in Java?有没有一种简单的方法可以在 Java 中按字母顺序排列字符串枚举?
【发布时间】:2009-09-30 14:50:52
【问题描述】:

正如标题所说。

我尝试在 List[] 上使用 Collections.sort() 和 ArrayList 的 .sort() 函数,但我始终无法将其解析回 Enumeration。

谢谢!

编辑:

这里有一些伪代码和进一步的解释。我的目标是从 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
         */
    }
}

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

【问题讨论】:

  • 错误,Collections.sort() 将 List 作为参数,而不是 List[]。并且 ArrayList 没有 sort() 方法。您可能需要重新表述您的问题。
  • 为了清楚起见,可能会发布一些伪代码或其他东西......

标签: java sorting enumeration


【解决方案1】:

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

Collections.enumeration(myList)

将其恢复为枚举...如果我没听错的话..

编辑:

你可以这样做……

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

【讨论】:

  • 考虑到我的更新,我认为没有办法在不使用枚举的情况下从 HT 获取密钥(唯一真正有效的 HT 方法是 keys(),它返回一个 Enum )
  • 您只是错过了 keySet() 方法...这将使您更容易使用...在我编辑的答案中快速演示
  • 太好了,谢谢!我用你的(和 KLE 的 for 循环)来检查每个项目。
  • List list = new ArrayList(htData.keySet()); Collections.sort(list); for(对象 s : list) { System.out.println(s.toString()); }
【解决方案2】:

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

【讨论】:

  • 有趣。不幸的是,Hashtable 是一个先决条件。
  • 在这种情况下,使用 danb 的解决方案。
【解决方案3】:

如何将您的键存储在 ArrayList 中以对其进行排序?

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

【讨论】:

    【解决方案4】:

    以下应该可以工作:

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

    【讨论】:

      猜你喜欢
      • 2011-09-20
      • 1970-01-01
      • 2010-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-08
      • 2011-08-29
      相关资源
      最近更新 更多