Describe the bug There is a performance issue for array properties here. The time complexity would be O(N^2) so if we have 1,000 array properties then it would have 1,000,000 circulation.
for (PropertySource source : sources) {
@SuppressWarnings("unchecked")
Map<String, Object> value = (Map<String, Object>) source.getSource();
for (String key : value.keySet()) {
if (!key.contains("[")) {
// Not an array, add unique key to the map
combinedMap.put(key, value.get(key));
}
else {
// An existing array might have already been added to the property map
// of an unequal size to the current array. Replace the array key in
// the current map.
key = key.substring(0, key.indexOf("["));
Map<String, Object> filtered = new LinkedHashMap<>();
for (String index : value.keySet()) {
if (index.startsWith(key + "[")) {
filtered.put(index, value.get(index));
}
}
map.put(key, filtered);
}
}
}
Sample Assuming we have array properties as below.
a[0]: 0
a[1]: 1
...
a[1000]: 1000
Comment From: lc77254
related to #385