方法不预先调整集合的分配
Method does not presize the allocation of a collection
Sonar 向我显示了这个错误 Performance - Method does not presize the allocation of a collection
Method mapping(ResponseEntity) does not presize the allocation of a
collection
代码如下:
private Set<ResponseDTO> mapping(ResponseEntity<String> responseEntity) {
final Set<ResponseDTO> result = new HashSet<>();
final JSONObject jsonObject = new JSONObject(responseEntity.getBody());
final JSONArray jsonArray = jsonObject.optJSONArray("issues");
for (int i = 0; i < jsonArray.length(); i++) {
final JSONObject innerObject = jsonArray.getJSONObject(i);
final String name = innerObject.optString("key");
result.add(new ResponseDTO().name(name));
}
return result;
}
为什么 Sonar 将此标记为错误,我该如何解决?
好吧,您正在对一个已知长度的数组进行操作,并将所有元素添加到集合中。假设您没有任何重复结果集应该包含相同数量的元素。
但是,您正在创建一个具有默认初始容量的集合,即 new HashSet<>()
。这可能会导致需要调整集合的大小,这本身不是问题,但没有必要,因此可能会导致一些性能下降。
要摆脱它,请在迭代之前通过 new HashSet<>(jsonArray.length())
创建集合。
Sonar 向我显示了这个错误 Performance - Method does not presize the allocation of a collection
Method mapping(ResponseEntity) does not presize the allocation of a collection
代码如下:
private Set<ResponseDTO> mapping(ResponseEntity<String> responseEntity) {
final Set<ResponseDTO> result = new HashSet<>();
final JSONObject jsonObject = new JSONObject(responseEntity.getBody());
final JSONArray jsonArray = jsonObject.optJSONArray("issues");
for (int i = 0; i < jsonArray.length(); i++) {
final JSONObject innerObject = jsonArray.getJSONObject(i);
final String name = innerObject.optString("key");
result.add(new ResponseDTO().name(name));
}
return result;
}
为什么 Sonar 将此标记为错误,我该如何解决?
好吧,您正在对一个已知长度的数组进行操作,并将所有元素添加到集合中。假设您没有任何重复结果集应该包含相同数量的元素。
但是,您正在创建一个具有默认初始容量的集合,即 new HashSet<>()
。这可能会导致需要调整集合的大小,这本身不是问题,但没有必要,因此可能会导致一些性能下降。
要摆脱它,请在迭代之前通过 new HashSet<>(jsonArray.length())
创建集合。