如何从 YAML 获取有序的 HashMap?
How to get ordered HashMap from YAML?
我正在尝试从我的 config.yml 文件中检索 Map
,但找不到保持之前设置的键顺序的方法。
classes:
beginner: 1000
proplayer: 2000
admin: 5000
我知道 classes
的键集给我一个 Map
,但顺序与显示的不一样。
我需要它是有序的,因为这是玩家将升级到的 classes 的顺序。
所以如果他是初学者,他需要升级到proplayer等等。
我需要一些方法来解决这个问题,这样我就可以得到初学者在索引 0 处,以便猜测玩家将移动到下一个 class,在这种情况下,proplayer (索引 1),但我还需要检索 class 的 int
值,以便向玩家收取他要移动到的 class 的金额。
简而言之使用列表?
classes:
- beginner: 1000
- proplayer: 2000
- admin: 5000
正在阅读:我认为这里已经回答了:
how to read lists in yaml?
Map
的实现不关心条目顺序。
因此,在使用 classes
层次结构轻松检索每个值的同时,我会创建一个并行列表来跟踪它们的顺序。
classes:
order:
- beginner
- proplayer
- admin
cost:
beginner: 1000
proplayer: 2000
admin: 5000
List<String> orderedList = data.getStringList("classes.order");
String item = orderedList.get(0);
int cost = data.getInt("classes.cost." + item);
YAML 中的有序映射可以这样指定:
classes: !!omap
- beginner: 1000
- proplayer: 2000
- admin: 5000
请参阅 YAML 规范中的 Example 2.26. Ordered Mappings
(1.0, 1.1 or 1.2)
请注意,您的 YAML 解析器不一定支持它,但很有可能(SnakeYAML 确实支持它)。
将用于结果的实际类型也特定于您的 YAML 解析器,但应映射到语言中最自然有序的映射类型。
我正在尝试从我的 config.yml 文件中检索 Map
,但找不到保持之前设置的键顺序的方法。
classes:
beginner: 1000
proplayer: 2000
admin: 5000
我知道 classes
的键集给我一个 Map
,但顺序与显示的不一样。
我需要它是有序的,因为这是玩家将升级到的 classes 的顺序。 所以如果他是初学者,他需要升级到proplayer等等。
我需要一些方法来解决这个问题,这样我就可以得到初学者在索引 0 处,以便猜测玩家将移动到下一个 class,在这种情况下,proplayer (索引 1),但我还需要检索 class 的 int
值,以便向玩家收取他要移动到的 class 的金额。
简而言之使用列表?
classes:
- beginner: 1000
- proplayer: 2000
- admin: 5000
正在阅读:我认为这里已经回答了:
how to read lists in yaml?
Map
的实现不关心条目顺序。
因此,在使用 classes
层次结构轻松检索每个值的同时,我会创建一个并行列表来跟踪它们的顺序。
classes:
order:
- beginner
- proplayer
- admin
cost:
beginner: 1000
proplayer: 2000
admin: 5000
List<String> orderedList = data.getStringList("classes.order");
String item = orderedList.get(0);
int cost = data.getInt("classes.cost." + item);
YAML 中的有序映射可以这样指定:
classes: !!omap
- beginner: 1000
- proplayer: 2000
- admin: 5000
请参阅 YAML 规范中的 Example 2.26. Ordered Mappings
(1.0, 1.1 or 1.2)
请注意,您的 YAML 解析器不一定支持它,但很有可能(SnakeYAML 确实支持它)。
将用于结果的实际类型也特定于您的 YAML 解析器,但应映射到语言中最自然有序的映射类型。