当前位置: 首页 > 面试题库 >

如何在Java中按字母顺序对枚举成员进行排序?

牛越
2023-03-14
问题内容

我有一个如下的枚举类:

public enum Letter {
    OMEGA_LETTER("Omega"), 
    GAMMA_LETTER("Gamma"), 
    BETA_LETTER("Beta"), 
    ALPHA_LETTER("Alpha"),

    private final String description;

    Letter() {
      description = toString();
    }

    Letter(String description) {
      this.description = description;
    }

    public String getDescription() {
      return description;
    }
}

在我的代码后面,我基本上遍历了Letter枚举,并将其成员打印到控制台:

for (Letter letter : Letter.values()) {
System.out.println(letter.getDescription());
}

我认为值()方法会给我的枚举的有序视图(如提到这里),但这里不是这种情况。我只是按照在Letter枚举类中创建它们的顺序来获得枚举成员。有没有一种方法可以按字母顺序输出枚举的值?我需要一个单独的比较器对象,还是有内置的方法来执行此操作?基本上,我希望根据getDescription()文本按字母顺序对值进行排序:

Alpha
Beta
Gamma
Omega

问题答案:
SortedMap<String, Letter> map = new TreeMap<String, Letter>();
for (Letter l : Letter.values()) {
    map.put(l.getDescription, l);
}
return map.values();

或者只是重新排列声明:-)

编辑:正如KLE所指出的,这假定描述在枚举内是唯一的。



 类似资料:
  • 问题内容: 我有一个包含国家/地区名称的对象。如何按字母顺序对列表进行排序? 问题答案: 假设这些是字符串,请使用方便的静态方法sort……

  • 问题内容: 我想按字母顺序对JAVA中的字符串进行排序,如下所示:AaBbCcDdEeFfGg之后是大写字母和小写字母。例如,如果我把AbaC退还给我AabC,谢谢! 问题答案: 如果先将字符放入数组中,则可以使用进行此操作。(为了使用不区分大小写的自定义比较器,它必须是对象数组,而不是基元。)

  • 问题内容: 有没有一种简单的方法可以在Python中按字母顺序对字符串中的字母进行排序? 因此对于: 我想返回: 问题答案: 你可以做:

  • 问题内容: 我得到了一个数组(请参阅下面的数组中的一个对象),我需要使用JavaScript按名字排序。我该怎么做? 问题答案: 假设您有一个数组。您可以使用并传递一个接受两个参数并进行比较的函数(比较器) 它应该返回 如果第一个参数小于第二个参数,则为负数(应在结果数组的第二个参数之前放置) 如果第一个参数较大,则为正数(应放在第二个参数之后) 如果这两个元素相等,则为0。 在我们的情况下,如果

  • 问题内容: 我必须创建一种方法,该方法根据电子邮件按字母顺序对对象的 ArrayList 进行排序,然后打印排序后的数组。我在排序时遇到的麻烦。我已经对其进行了研究并尝试使用,但这对我不起作用。我当时是需要一个称为比较器的东西,但无法弄清楚它是如何工作的。我将不得不使用这些东西吗?还是像气泡排序或插入排序这样的东西可以用于这种事情? 这是我到目前为止的代码: 问题答案: 排序部分可以通过实现cus