我有这段代码,我正在初始化这个 HashMap
像:
final HashMap<String, String> propertiesValueMap = new HashMap<String, String>(){{
put(SOME_STRING, SOME_STRING);
put(SOME_STRING, SOME_STRING);
put(SOME_STRING, SOME_STRING);
}};
上述代码在 SonarQube 中给出了非投诉代码问题。 还有其他方法可以初始化吗?
我知道一种方法,例如
Stream.of(new String[][]{
{ SOME_STRING, SOME_STRING},{SOME_STRING, SOME_STRING}
}).collect(Collectors.toMap(data->data[0],data->data[1]
));
但这会让我返回Map<String,String>
我想要 HashMap<String,String>
.
最佳答案
正如 Sonarsource 所说:
Double Brace Initialization (DBI) is so obscure...
Double Brace Initialization should not be used
你可以做类似的事情
Map<String, String> propertiesValueMap = createMap();
private static Map<String, String> createMap() {
Map<String, String> myMap = new HashMap<String, String>();
myMap.put(SOME_STRING, SOME_STRING)
return myMap;
}
或者,如果您要创建不可变的 Map 并使用 Java 9:
import static java.util.Map.entry;
Map<String, String> propertiesValueMap = Map.ofEntries(
entry("SOME_STRING", "SOME_STRING"),
entry("SOME_STRING2", "SOME_STRING2")
);
关于java - Sonarqube 给出了 HashMap 初始化代码合规问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72084511/