Java Sonar冲突:使用键集迭代器代替entrySet迭代器效率低下

Java Sonar冲突:使用键集迭代器代替entrySet迭代器效率低下,java,Java,请参考以下方法: public Properties getProperties() { try { Properties properties = new Properties(); loadProperties(properties); for (Object key : properties.keySet()) { prop

请参考以下方法:

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;
        }
    }
我可以理解,因为
entrySet
返回的是只需要key的key-value对,所以我得到了不兼容的错误

如何为下面的代码片段实现
entrySet
,以修复声纳违规

下面是设置键和值的
setProperty()
方法

public synchronized Object setProperty(String key, String value) {
    return put(key, value);
}
返回类型<代码>映射。条目用于将每个键和关联的值保存在一起。由于可以使用传统的for-each循环在
集合
上迭代,因此您可以像这样重写for循环:

for (Map.Entry<String, Setting> entry : settings.entrySet()) {
    properties.setProperty(entry.getKey(), entry.getValue().getValue());
}
for(Map.Entry:settings.entrySet()){
properties.setProperty(entry.getKey(),entry.getValue().getValue());
}

您必须创建
属性
对象吗?如果这个方法创建了一个
Map
,那么剩下的代码可以吗?有人可以解决这个问题吗?->entry.getValue()-返回与此条目对应的值。您能告诉我“entry.getValue().getValue()”将返回什么吗?@Renga在您的初始代码中,您使用了
settings.get(key).getValue()
。我重写了
settings.get(key)
entry.getValue()
so
settings.get(key).getValue()
entry.getValue().getValue()
for (Map.Entry<String, Setting> entry : settings.entrySet()) {
    properties.setProperty(entry.getKey(), entry.getValue().getValue());
}