Java 如何从LinkedHashMap迭代器获取键、值对?
我测试SnakeYAML库以阅读.yaml文档。我已经阅读了示例2.27。发票来源和我获取对象:Java 如何从LinkedHashMap迭代器获取键、值对?,java,iterator,linkedhashmap,Java,Iterator,Linkedhashmap,我测试SnakeYAML库以阅读.yaml文档。我已经阅读了示例2.27。发票来源和我获取对象: System.out.println(content); Yaml yaml = new Yaml(); Object o = yaml.load(content); 其中内容是使用Files.readAllBytes、encoding.decode从文件加载的字符串(编码为StandardCharsets.UTF_8) 反射让我意识到o是java.util.LinkedHashMap的类型,我可
System.out.println(content);
Yaml yaml = new Yaml();
Object o = yaml.load(content);
其中内容是使用Files.readAllBytes、encoding.decode从文件加载的字符串(编码为StandardCharsets.UTF_8)
反射让我意识到o是java.util.LinkedHashMap的类型,我可以迭代它们:
Set entrySet = o.entrySet();
Iterator it = entrySet.iterator();
System.out.println("LinkedHashMap entries : ");
while (it.hasNext())
{
Object entry = it.next();
System.out.println(entry);
}
反射返回的条目类型为LinkedHashMap$entry。但是问题是:内部类LinkedHashMap$条目是私有的,我不能声明这种类型的对象。
如何从entry、iterator或entrSet中获取配对?您应该声明一个
Map.entry
,而不是LinkedHashMap.entry
:
while (it.hasNext())
{
Map.Entry<?,?> entry = it.next();
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
此外,您还可以使用增强的foreach循环进行迭代:
final Map<?,?> myMap = (Map<?,?>) yaml.load(content);
for(final Entry<?,?> entry : o.entrySet()) {
//do stuff with entry
}
final Map myMap=(Map)yaml.load(content);
for(最终条目:o.entrySet()){
//用入口做东西
}
显然,如果您知道您的
映射
正在将字符串
映射到对象
(例如),您可以使用映射
,您应该声明一个映射项
,而不是链接映射项
:
while (it.hasNext())
{
Map.Entry<?,?> entry = it.next();
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
此外,您还可以使用增强的foreach循环进行迭代:
final Map<?,?> myMap = (Map<?,?>) yaml.load(content);
for(final Entry<?,?> entry : o.entrySet()) {
//do stuff with entry
}
final Map myMap=(Map)yaml.load(content);
for(最终条目:o.entrySet()){
//用入口做东西
}
显然,如果您知道您的
映射
正在将字符串
映射到对象
(例如),您可以使用映射
查看发布在以下位置的示例:
和
查看发布在以下位置的示例: 和
改用公共界面。改用公共界面。