1

我需要将枚举的序数值作为参数传递给HashMap<String, String>. 换句话说,我想将序数转换为字符串。

现在,我正在这样做:

HashMap<String, String> myHashMap = new HashMap<String, String>();
myHashMap.put("foo", String.format("%s", MyEnum.BAR.ordinal()));

这是最好的方法吗?该.toString()方法在此处不可用,并且(String)MyEnum.BAR.ordinal()不起作用。

4

5 回答 5

2

你也可以使用

String.valueOf()

myHashMap.put("foo", String.valueOf(MyEnum.BAR.ordinal()));
于 2013-09-25T14:41:44.133 回答
1

你可以使用

myHashMap.put("foo", String.format("%d", Integer.toString(MyEnum.BAR.ordinal())));

或者干脆(信用@OldCurmudgeon)

myHashMap.put("foo", Integer.toString(MyEnum.BAR.ordinal()));

免责声明:必须同意使用Map<String, MyEnum>是更好方法的评论

于 2013-09-25T14:39:27.727 回答
1

ordinal()是一个可以更改的内部编号。我建议你只使用

Map<String, String> myMap = new HashMap<>();
myMap.put("foo", MyEnum.BAR.toString());

或者

Map<String, Object> myMap = new HashMap<>();
myMap.put("foo", MyEnum.BAR);

或者

Map<String, MyEnum> myMap = new HashMap<>();
myMap.put("foo", MyEnum.BAR);
于 2013-09-25T14:41:35.960 回答
1

如果您使用HashMap<String, Integer>并且没有将序数转换为字符串的最佳方法

于 2013-09-25T14:42:04.007 回答
0

我想最好使用枚举名称作为键

MyEnum.BAR.name()

并转换回来

MyEnum.valueOf("BAR")
于 2013-09-25T14:45:45.267 回答