java – Sonar Violation:低效使用keySet迭代器而不是entrySet
发布时间:2020-12-15 04:29:33 所属栏目:Java 来源:网络整理
导读:请参考以下方法: public Properties getProperties() { try { Properties properties = new Properties(); loadProperties(properties); for (Object key : properties.keySet()) { properties.setProperty((String) key,convertPropertyValue(properties.g
请参考以下方法:
public Properties getProperties() { try { Properties properties = new Properties(); loadProperties(properties); for (Object key : properties.keySet()) { properties.setProperty((String) key,convertPropertyValue(properties.getProperty((String) key))); } // Add Config API Keys/Values IConfigurationManager configMgr = ConfigurationManager.getInstance(); Map<String,Setting> settings = configMgr.getSettings(); for (String key : settings.keySet()) { properties.setProperty(key,settings.get(key).getValue()); } return properties; } catch (java.io.IOException ex) { return null; } } 当我将代码更改为settings.entrySet()而不是settings.keySet()时,它会抛出以下错误: <<< error: incompatible types [ERROR] for (String key : settings.entrySet()) >>> 我可以理解,因为entrySet返回键值对,其中只有键是预期的,我得到不兼容的错误. 如何为以下代码实现entrySet来修复声纳违规? 以下是设置键和值的setProperty()方法 public synchronized Object setProperty(String key,String value) { return put(key,value); } 解决方法Map.entrySet() 返回类型
Set<Map.Entry> .Map.Entry用于将每个键和相关值保持在一起.由于可以使用传统的for-each循环迭代Set,因此可以像这样重写for循环:
for (Map.Entry<String,Setting> entry : settings.entrySet()) { properties.setProperty(entry.getKey(),entry.getValue().getValue()); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |