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

基于枚举常量的Java排序

钱跃
2023-03-14
问题内容

我们有一个枚举

enum listE {
    LE1,
    LE4,
    LE2,
    LE3
}

此外,我们还有一个包含字符串的列表["LE1","LE2","LE3","LE4"]。有没有一种方法可以根据枚举定义的顺序(而不是自然String顺序)对列表进行排序。

排序后的列表应为["LE1", "LE4", "LE2", "LE3"]


问题答案:

Enum<E>器具Comparable<E>通过枚举(其中值声明的顺序)的自然顺序。如果仅通过解析创建枚举值(而不是字符串)的列表Collections.sort,则使用对该列表进行排序,它应该按照您想要的方式进行排序。如果您再次需要一个字符串列表,则可以通过调用name()每个元素来转换回来。



 类似资料:
  • 问题内容: 通过阅读SCJP书籍,我在第1章“自测”中发现了类似的内容: 注意:代码编译正常。我不明白的是为什么我们可以从变量访问DOG,CAT或FISH常量。我认为(并且也写在书中)DOG,FISH,CAT是常量,其实现方式类似于。 所以,如果它们确实是静态的,为什么我们可以从中访问它们呢?最后一行是我熟悉的方式。 问题答案: 写作 和写作一样。也就是说,编译器将用其编译时类型Animal替换变

  • 问题内容: 我正在查看公司其他部门维护的一些Java代码,顺便说一下,这是一些前C和C ++开发人员所维护的。普遍存在的一件事是使用静态整数常量,例如 除了缺少“最终”限定符外,这种代码也让我有些不安。我本来希望看到的是,从学校开始主要接受Java的培训,这会更像 但是,论点使我失望。为什么要比后者更好呢? 问题答案: 为什么要比后者更好呢? 这样做要好得多,因为它可以为您提供类型安全性并具有自记

  • 主要内容:声明常量,实例,VB.Net打印和显示常量,声明枚举,实例常量指的是程序在执行过程中可能不会改变的固定值。 这些固定值也被称为文字。 常量可以是任何基本数据类型,如整数常量,浮点常量,字符常量或字符串文字。 也有枚举常量。 常量的处理方式与常规变量一样,只是它们的值在定义之后无法修改。 枚举是一组命名的整数常量。 声明常量 在VB.Net中,使用语句声明常量。 语句用于模块,类,结构,过程或块级别,以代替文字值。 语句的语法是: 其中, attribut

  • 问题内容: 我无法使用从常量中获取的枚举作为注释中的参数。我收到此编译错误:“注释属性[attribute]的值必须是枚举常量表达式”。 这是枚举代码的简化版本: 对于注释: 和班级: 该错误仅在方法B的“ theEnum = MYENUM_CONSTANT”中显示。字符串和int常量对于编译器是可以的,但Enum常量不是,即使它的值与methodA上的值完全相同。在我看来,这是编译器中缺少的功能

  • 问题内容: 如果必须在使用该对象之前对其进行初始化,那么初始化基于Java枚举的单例的正确方法是什么。 我已经开始编写代码,但是不确定是否做对了。您能帮我实现这个单例吗? 问题答案: 完全有可能为以下对象创建构造函数: 注意: 字段可以是最终的(我们喜欢) 不必是 构造函数会自动为您调用 注意最后一点。由于-singletons是在加载类时急切创建的,因此您无法将任何参数传递给构造函数。当然可以通

  • 问题内容: 我正在做一些实验,无意间写了一段代码,这很奇怪,我还没完全明白。我什至可以编译它,我什至感到惊讶。看起来像这样: 不出所料,无法通过以下方式访问此类元素: 原因是,编译器将在枚举本身内寻找该方法。 我以为不可能从枚举之外访问这些方法和变量。因此,我尝试创建一个参数构造函数,并使用一些内部变量进行调用: 不可能编译这样的构造。现在,我在想如果没有办法访问常量,那么在常量中定义某些东西有什