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

如何反转枚举?

袁青青
2023-03-14
问题内容

我下面有一个Enum类

public class PTalkCommand {
public enum Code {
        CLR((byte) 0),
        ACK((byte) 170),
        SER((byte) 0),
        NAK((byte) 0),
        TIMEOUT((byte) 255),
        DIP((byte) 173),
        REQUEST_CHECKSUM((byte) 162),
        REQUEST_STATUS((byte) 181),
        REQUEST_FLASH((byte) 166),
        REQUEST_CONFIG_READ((byte) 249),
        REQUEST_STATUS_SCREEN((byte) 208),
        REQUEST_MULTIPULSE_CONFIG((byte) 0),
        REQUEST_SERIAL_NUMBER((byte) 62),
        REQUEST_BILL_NAMES((byte) 64),
        DO_FLASH((byte) 161),
        DO_MOTOR((byte) 81),
        DO_SEND_EE_PROM_DATA((byte) 50),
        DO_ENTER_FILE_NAME((byte) 61),
        DO_ENTER_SERIAL_NUMBER((byte) 63),
        DO_CONFIGURE((byte) 248),
        DO_MULTIPULSE_CONFIG((byte) 210),
        DATA_COLLECTION_RAW_SENSORS((byte) 84),
        DATA_COLLECTION_MODE((byte) 0),
        DATA_COLLECTION_CAL_POINTS((byte) 0),
        DATA_COLLECTION_WITH_DEBUG((byte) 68),
        DATA_COLLECTION_EXIT((byte) 119),
        CALIBRATE_OAS((byte) 150),
        CALIBRATE_NOTE_PRESENT_PUNCH((byte) 0),
        CALIBRATE_CB_REMOVED((byte) 0),
        CALIBRATE_IR_BLUE_TRANSMISSIVE((byte) 0),
        CALIBRATE_IR_REFLECTIVE((byte) 0),
        CALIBRATE_BLUE_REFLECTIVE((byte) 0),
        CALIBRATE_MONITOR_VOLTAGES((byte) 0),
        STACKER_OR_STACKERLESS((byte) 158),
        CALIBRATE_CURVE_LEVER((byte) 0),
        REQUEST_BEZEL_REV_LEV((byte) 73),
        DO_BEZEL_UPDATE((byte) 82);

        private final byte valueCode;

        private Code(byte value) {
            this.valueCode = value;
        }

        public byte getValue() {
            return valueCode;
        }
    }
}

并希望它得到相反的顺序。在.Net中,代码是这样的

public void Prepend (PTalkCommand.Code[] commands) {
            IEnumerable<PTalkCommand.Code> enumerable = commands.Reverse<PTalkCommand.Code> ();
            foreach (PTalkCommand.Code current in enumerable) {
                base.Insert (0, (byte)current);
            }
        }

在Java中,我试图做同样的事情。

Enumeration<PTalkCommand.Code> enumerable = commands. ???????

但是,我无法做到。请告诉我如何用Java做同样的事情?


问题答案:

有一个内置.values()方法可返回所有枚举常量的数组。您可以向后迭代。

Code[] values = Code.values();
for (int i = values.length - 1; i >= 0; i--) {
    Code next = values[i];
    //do your thing
}


 类似资料:
  • 问题内容: 对于 áéí 等特殊字符,我可以致电: 要获取相应的html实体,请执行以下操作: 我怎样才能将其 转回áéí ? 问题答案: 如果您使用编码,则可以使用以下过程: decode.php) 将所有HTML实体转换为它们的适用字符。 html_entity_decode() 与htmlentities()相反,它可以将字符串中的所有HTML实体转换为它们的适用字符。 例如

  • 问题内容: 我有一个返回int类型的函数。但是,我只有TAX枚举的值。 如何将TAX枚举值转换为整数? 问题答案: 您需要以某种方式使枚举公开,例如 (顺便说一句,我将名称更改为更常规和易读。) 这是 假设 您要在构造函数中分配值。如果这不是您想要的,则需要向我们提供更多信息。

  • 问题内容: 我有一个第三方图书馆给我一个图书馆。我想像Java 8那样懒惰地使用该枚举,并调用诸如此类的东西。 有没有现成的图书馆?我已经在引用Guava和Apache Commons,所以如果其中任何一个都有理想的解决方案。 另外,在保留所有内容的懒惰性质的同时将a 变成最佳/最简单的方法是什么? 问题答案: 这个答案已经提供了一个解决方案,可以解决以下问题: 应当强调的是,由此而来 的 懒任何

  • 问题内容: 我有一些Java代码,我想将其翻译为C#。srcParams是一个哈希表。 这是Java代码: 这是我在C#中的尝试 你能告诉我是否正确吗? 问题答案: 您所拥有的几乎可以了,只需重命名变量并添加的使用即可:

  • 我有一个第三方库,它给我一个。我希望将该枚举作为Java8来使用,在其上调用诸如、和之类的东西。 是否有一个现有的库中包含此内容?我已经引用了Guava和Apache Commons,所以如果其中任何一个都有理想的解决方案。 或者,将转换为同时保留所有内容的惰性的最佳/最简单的方法是什么?

  • 问题内容: 我需要反转用户输入的字符串。 我需要用最简单的方法完成它。我正在尝试做reverseOrder(UserInput),但是没有用。 例如,用户输入abc,我只是获取字符串并打印出cba 问题答案: 用于按正常顺序反向排序。