栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

遍历地图条目集

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

遍历地图条目集

您在第一个错误中遇到的错误是:

Type mismatch: cannot convert from element type Object to Map.Entry

这是因为编译器会转换FOR-IN循环:

for (Entry entry : anyMap.entrySet()) {}

至:

for (Iterator i = anyMap.entrySet().iterator(); i.hasNext();) {    Entry e = i.next(); // not allowed}

您的第二个示例有效, 但只能通过作弊! 您正在进行未经检查的演员表转换,以

Set
恢复
Set<Entry>

Set<Entry> entries = anyMap.entrySet(); // you get a compiler warning herefor (Entry entry : entries) {}

成为:

Set<Entry> entries = anyMap.entrySet();for (Iterator<Entry> i = entries.iterator(); i.hasNext(); ) {    Entry e = (Entry) i.next(); // allowed}

更新资料

如注释中所述,在两个示例中,类型信息都将丢失:由于编译器的原始类型擦除规则。

为了提供向后兼容性,原始类型实例的 所有 方法都将由其 擦除的
对应对象代替。因此,由于您

Map
是原始类型,因此将其全部删除。包括其
Set<Map.Entry<K, V>>entrySet();
方法:您的原始类型实例将被迫使用已删除的版本:
Set entrySet()



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/453765.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号